问答详情
源自:4-14 结束语句之break语句

有没有大神告诉我 这是为什么

作者的标准答案中用除数(m)去除于被除数(n),但在子循环中逻辑式中式要求n<m,为什么还会有后面的n=m,并且还输出了?还有如果按这个公式算的话4/4余0,4=4,为什么4没有输出以及6除于6,8除于8........,

提问者:慕粉2221100776 2022-06-09 07:31

个回答

  • weixin_慕哥8591911
    2023-02-17 10:50:37

    因为不可能出现你说的这种情况,外层循环当m=4的时候,到子循环n是从2开始遍历2到4之间的数

  • hermaniu
    2022-11-02 22:06:06

    暴力从2一直遍历到自身 如果能取模为0(至少含有2这个因子 ) 说明不是素数 跳出遍历 继续判定下一个数 暴力遍历  

  • weixin_慕工程7134342
    2022-10-19 20:31:23

    #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;    

    }

    首先说明一下什么是素数,素数就是只能被1和它本身整除的数,搞清楚后就开始讲这个程序是怎么一步一步来的;

    第一次:最外头的for循环给的m的初始值为2,即m=2,然后就开始内部的for循环了,即n=2,m%n(2%2==0),所以就输出m了,即2是素数;第二次最外头的for循环m=3,而内for循环的n的值就回到n=2了,而不是n=3,就会变成3%2!=0,然后n自增变成n=3了,就变成3%3==0,所以3是素数;第三次最外头的for循环m=4,内for循环n=2,然后4%2==0,但4与2不相等,所以4不是素数,后面以此类推,我第一次讲,希望我讲清楚了

  • 慕丝4030038
    2022-07-24 14:50:14

    请输入你的代码,查看后解答