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

素数的算法

#include <stdio.h>
int main()
{
    int m, n;
    for(m=3; 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;    
}

看不太懂啊?求大神讲解一下。比如说m%n==0这个地方和m==n这个地方?

正在回答

4 回答

m%n==0 能整除

m == n 到了循环的结束 

质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。

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

Obscure 提问者

那为什么要把3和2开始比较 啊?还是不太懂- 。-
2015-01-17 回复 有任何疑惑可以回复我~
#2

Obscure 提问者

非常感谢!
2015-01-19 回复 有任何疑惑可以回复我~
#3

我的仰视30 回复 Obscure 提问者

不是指把3和2进行比较。for(m=3; m<=50; m++)是把3到50的数循环遍历了一遍。其实素数就是质数,因此素数指的是只能被1和其本身整除的数,那么必然2到其本身减一的数都不能被它整除,所以可以通过for(n=2; n<m; n++)if( m%n==0 ) 来让它依次除以2到其本身减一的数,这样结果如果为0,这意味着不是素数,反之为素数。
2015-01-24 回复 有任何疑惑可以回复我~

1不是素数,其实素数也就是质素!在我刚才发的程序中 printf("2 ");的2后面有空格,不要忘了!

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

我觉得2也是素数,因此正确如下:

#include <stdio.h>

int main()

{

    int m, n;

    printf("2 ");

    for(m=3; 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;    

}


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

1, 2 都是素数

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

举报

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

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

进入课程

素数的算法

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