为了账号安全,请及时绑定邮箱和手机立即绑定
关注
慕斯卡1215

如果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?

2019-12-04 源自:C语言入门 4-14 178 浏览 2 回答

最佳回答

2019-12-04

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

慕斯卡1215 (提问者)

谢谢谢谢
#1 2019-12-09 回复

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

2019-12-05
回复 1

慕斯卡1215 (提问者)

谢谢同学
#1 2019-12-09 回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信