为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

因为在 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

7 回复 有任何疑惑可以回复我~
#1

慕斯卡1215 提问者

谢谢谢谢
2019-12-09 回复 有任何疑惑可以回复我~

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

2 回复 有任何疑惑可以回复我~
#1

慕斯卡1215 提问者

谢谢同学
2019-12-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信