用C语言如何判断素数

如题所述

第1个回答  2018-07-15

判断素数比较简单,首先你得知道,那些数属于素数,根据素数的定义,我们知道素数是指除了0与1之外,仅能被1和本身整除的数。那么我们直接依次进行判断就好了,代码如下:

bool isleap(int n){
    bool ok=true;
    if(n<=1) ok=false;
    for(int i=2;i<n;i++){
        if(n%i==0) ok=false;
    }
    if(!ok) return false;
    else return true;
}

以上只是判断一个数是否为素数的函数,当然了,也还可以优化一下,但是这样写,更加便于你理解,有问题请追问。

第2个回答  2018-07-09
#include<stdio.h>
int main()
{
    int n;//将要判断的数
    scanf("%d",&n);
    if(n<2)//素数是大于1的自然数,小于2的话就不判断了。
    {
        printf("输入数据不合法");
        return 0;
    }
    if(n==2||n==3||n==5)//先将几个比较小的素数挑出来
    {
        printf("%d是素数",n);
    }
    for(int i=2;i<n;i++)//真正的判断过程,注意这里的i<n,除了1与数本身,其他数都不能整除它的数才是素数
    {
        if(n%i==0)//有任何一个中间的数能整除它,它就不是素数。
        {
            printf("%d不是素数",n);
            return 0;//若当前数不是素数,直接退出程序,下面的代码便不会执行
        }
    }
    printf("%d是素数",n);//若成功的运行到了这里,那么当前数是素数。
    return 0;
}

第3个回答  2018-06-26

除了1 和本身 不能被整除

从1开始到本身,挨个判断整除,记录能整除的次数,次数为2的是素数

#include<stdio.h>
int  main()
{
    int i,a,j=0;
    printf("input one number:\n");
    scanf("%d",&a);
    for(i=1;i<=a;i++)
        if(a%i==0) j++;
    if(j==2) printf("yes");
    else printf("no");
    return 0;
}

第4个回答  2018-06-29
素数的定义是只能被自己和1整除。因此,如果待求数为N,则对于任意1<i<N,素数都不能整除。
bool PrimeCheck(int n){
if(n < 1){
return false;

}
for(int i = 2; i < n; i++){
if(n % i == 0){ //一旦出现能够整除的数就不是素数
return false;

}

}
return true; //遍历结束都没有能够整除的,则为素数
}
第5个回答  2018-07-06

根据素数的定义看,除了1和自身,不能被任何数整除,那判断一个数就把它从2一直除到比自己小1的数,看看有没有能整除的

例:

#include<stdio.h>

void main()
{
    int a;
    printf("输入你要判断的数:");
    scanf("%d",&a);
    for(int i=2;i<a;i++)
    {
        if(a%i==0)
        {
            printf("该数不是素数哦!");
            exit(0);
        }
    }
    printf("该数就是素数哦!");
}

相似回答