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

请问子循环for(n=2;n<m;n++)这个我怎么理解呢,第一次外部循环后m=2,n=2,然后n<m不成立,直接跳到了if(m==n),这句判断输出2了,再跳出自循环,n的值为3,m的值也是3了,又重复执行下去,到4的时候应该把4也同样输出来啊,我觉得这个逻辑应该把2到50之间所有的数都输出来,为什么自循环不是for(n=2n=m;n++)呢,我想不通!!

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


提问者:imooc_粉丝 2016-09-11 14:45

个回答

  • 慕工程4133130
    2018-01-23 19:43:13

    我还是不是太理解,能否就解释,谢谢咯!

  • qq_我不是DK_03199080
    2016-09-11 23:21:49

    哈哈  这是输出2-50的质数的程序

  • imooc_粉丝
    2016-09-11 15:35:54

    哈哈,我想明白了,n循环每次都是从2开始循环的,一直到n%m==0条件成立的时候跳出循环后判断条件m==n是否成立,若成立输出,若不成立直接子循环跳出,执行下一次父循环!!!!

  • imooc_粉丝
    2016-09-11 15:22:16

    或者有看明白的写一下具体的执行的过程,我不明白为什么不输出4