如何编写一个C语言程序判断一个数是否是素数?

如题所述

    思路1:

    判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。代码如下:
    #include <stdio.h>
    int main(){
    int a=0; // 素数的个数
    int num=0; // 输入的整数
    printf("输入一个整数:");
    scanf("%d",&num);
    for(int i=2;i<num;i++){
    if(num%i==0){
    a++; // 素数个数加1
    }
    }
    if(a==0){
    printf("%d是素数。\n", num);
    }else{
    printf("%d不是素数。\n", num);
    }
    return 0;
    }

    思路2:

    另外判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。代码如下:

    #include <stdio.h>
    #include <math.h>
    void main(){
    int m; // 输入的整数 
    int i; // 循环次数
    int k; // m 的平方根 
    printf("输入一个整数:");
    scanf("%d",&m);
    // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
    k=(int)sqrt( (double)m );
    for(i=2;i<=k;i++)
    if(m%i==0)
    break;
    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if(i>k)
    printf("%d是素数。\n",m);
    else
    printf("%d不是素数。\n",m);
    return 0;
    }

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-02-04
#include <stdio.h>
#include <math.h>
int is_p(int x)
{
int i;
if(x<2) return 0;
for(i=2;i<=sqrt(x);i++)
if(x%2==0) return 0;
return 1;
}

int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(is_p(n))printf("YES\n");
else printf("NO\n");
}
return 0;
}
上面的大牛,其实三种一模一样的,好好看看素数打表什么的
相似回答