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

 我来答
空无辉恋
2018-03-10 · TA获得超过1889个赞
知道小有建树答主
回答量:27
采纳率:0%
帮助的人:8000
展开全部
  1. 思路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. 思路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;
    }

panweikan
2018-02-04 · 超过19用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:47.2万
展开全部
#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;
}
上面的大牛,其实三种一模一样的,好好看看素数打表什么的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式