如果m=n=4,为啥不会输出4?

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

慕斯卡1215

2019-12-04 14:37

#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)
            printf("%d  ", m);
 }
 return 0;   
}

我在这里把n<m改成了n<=m,那么m=4,n=4时,m%n=0且m==n,为啥不会输出4?

写回答 关注

2回答

  • weixin_慕雪8055451
    2019-12-04 17:24:51
    已采纳

    因为在 m=4时 第四次开始内循环,所以还是从 n=2开始的,每次内循环开始时n都会被初始化为2,所以 4%2==0 符合  if(   m%n==0   ) break;

    结论就是:第二层循环不会执行到n=4才跳出循环,会提前跳出循环,因为4能被2整除。

    m=1时 n=2内循环结束

    m=2时 n=2内循环执行一次

    m=3时 n=2内循环执行两次 2,3

    m=4时 n=2内循环执行三次2,3,4 ,但是因为m%n==0 所以实际执行了1次

    m=5时 n=2内循环执行了四次 2,3,4,5

    慕斯卡121...

    谢谢谢谢

    2019-12-09 14:10:48

    共 1 条回复 >

  • 社会我籠哥
    2019-12-05 15:58:18

    因为当当m=4,n=2时,m%n==0,这时已经跳出循环,接着进行m==n的判断,只有符合条件才会输出。这时m=4,n=2,明显不相等,所以不会输出4

    慕斯卡121...

    谢谢同学

    2019-12-09 14:10:57

    共 1 条回复 >

C语言入门

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

926023 学习 · 20793 问题

查看课程

相似问题