为了账号安全,请及时绑定邮箱和手机立即绑定

素数是怎么判断的?

#include <stdio.h>
int main()
{
    int m, n;
    for(m=2; m<=50; m++)
    {
  for(n=2; n<m; n++)
        {
            if(m%n==0)       //什么条件下跳出当前循环
              break;                 //这里应该退出当前循环了
  } 
        if(m == n)   //n循环结束后,如果m=n的话就输出m
            printf("%d", m);
 }
 return 0;   
}

不是很理解答案?

正在回答

3 回答

首先了解一下素数的概念。素数是只能除以1和自身的数。

这里2个for循环,外面的for循环是遍历0-50这几个数的,里面的for是看m除了自己还能不能被整除。

外面的for从2开始算m是不是素数,n是除数,除数从2开始,如果m除以2余数为0,说明m能被2整除,则m不是素数,里面for循环break,继续算外面的for循环m+1。


1 回复 有任何疑惑可以回复我~
#1

cooooyq 提问者

不能理解第二个for循环里面 (n<m)
2015-12-07 回复 有任何疑惑可以回复我~
#2

Perona 回复 cooooyq 提问者

这个就是看m除了自己还能不能被整除。所以循环条件是小于本身的。
2015-12-07 回复 有任何疑惑可以回复我~
#3

cooooyq 提问者 回复 Perona

知道了
2015-12-07 回复 有任何疑惑可以回复我~
#4

cooooyq 提问者

非常感谢!
2015-12-20 回复 有任何疑惑可以回复我~
查看1条回复

for(i=2;i<=n-1;i=i+1) ,这句中的i=i+1是不是可以换成i++???

0 回复 有任何疑惑可以回复我~
#1

qq_剁椒鱼头i_0

可以吧,两个意思一样
2016-03-06 回复 有任何疑惑可以回复我~

给你一个类似的

#include<stdio.h>

main()

{  

int i,n,j;

j=0;

    for(n=101;n<=300;n++)   

{  

for(i=2;i<=n-1;i=i+1)    

           if(n%i==0)    

             break;    

            if(i>=n)

printf("%d\n",n);

}  

printf("%d",j);

}


0 回复 有任何疑惑可以回复我~
#1

cooooyq 提问者

printf("%d",j); 在这里的意思是什么? 不要这局, return 0;不就可以了吗?
2015-12-20 回复 有任何疑惑可以回复我~
#2

mukersex

j有什么用么?
2016-02-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       924403    人
  • 解答问题       20753    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

素数是怎么判断的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信