素数的算法

来源:4-14 结束语句之break语句

Obscure

2015-01-17 12:34

#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回答

  • Erik_Song
    2015-01-17 13:05:46
    已采纳

    m%n==0 能整除

    m == n 到了循环的结束 

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

    我的仰视30 回复Obscur...

    不是指把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 15:32:06

    共 3 条回复 >

  • 我的仰视30
    2015-01-24 15:23:15

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

  • 我的仰视30
    2015-01-24 15:19:23

    我觉得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;    

    }


  • Erik_Song
    2015-01-17 19:07:34

    1, 2 都是素数

C语言入门

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

926826 学习 · 20803 问题

查看课程

相似问题