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

为什么第二个for循环内n<m,跳出循环后n 能等于m

for(m=2;m<=50;m++)

{

        for(n=2;n<m;n++)

                {

                  if(m%n==0)

                 }

         if(n==m)

}

提问者:慕勒0452018 2018-12-14 20:04

个回答

  • Scorp_
    2019-01-16 11:17:10

    第一层循环遍历从2-50的所有数;第二层循环遍历大于2小于第一层数字的所有数;

    根据定义,当一个数只能被只能被1和它本身整除的数字是素数。

    把第一句话翻成人话就是   找一个数字,除以比他小的每一个数字,如果求余等于0的结果不是他本身(能整除别的数字) 即这个数不是素数

    如果是他本身,即这个数是素数

    这也就是下两句的判断逻辑

  • 在赶往大神的路上
    2018-12-16 12:04:30

    for循环是
    for(1;2;3)
    {
     代码。。。
     }
     //1,先运行for里的“1”和“2”然后运行{}里的,之后返回来运行“3”,
     //2,按照这样的话,M的初始值是2,N的也是2,m<=50是真(值为非0,可以用printf("%d\n",m<=50);看到),
     //然后执行第二个for循环
     //3,n=2,n<m为假(值为0)不执行if(m%n == 0)
     //4,接着执行if(n == m),然后执行m++(就是m加1)
     //5,再执行“1”和“2”,循环往复直到循环结束。
     //不知道你能理解不,我也是没入门呢,正在学,这个需要你自己理解。

  • 慕勒0452018
    2018-12-15 18:17:44

    那怎么可能n能被m 整除呢,按你的说n只比m小一

  • 慕函数7531614
    2018-12-14 21:18:45

    因为后面有个n++;n++的作用是在运算结束后n的值加一。