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

将for(n=2;n<m;n++)改为for(n=2;n<=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;   
}

正在回答

4 回答

你可以先把if(m==n)删掉,看运行结果就容易理解一点了

0 回复 有任何疑惑可以回复我~

运行没有影响,但是对代码运行的理解是不一样的。for(表达式1;表达式2;表达式3),前面有流程图说明三个表达式运行的顺序。1.没有=情况下,意思是在除1与本身以为,不存在整除数,不会提前跳出形成n!=m的情况,因此会在n=m-1执行最后一次循环后,进行n++运算,再进行n<m判断,明确的是,在这里已经存在了n=m,所以跳出循环。2.你加了=号的情况,更利于理解成,在找到n=m前,没有找到其他整除数,最后找到了n=m。这里需要提醒的是,如果在后面会用到n的值,需要清晰的理解n=?

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

运行上没问题,没什么影响

0 回复 有任何疑惑可以回复我~

首先你的程序写得很乱,我指的是格式,可读性很差。其次改为<=只是在for的判断条件中已经包含了=,所以在接下来的条件判断中可考虑省略相等管关系的判断

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

超优秀

是因为m=2,n=2吗?求解答,要不睡不着啊
2020-03-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

将for(n=2;n<m;n++)改为for(n=2;n<=m;n++)是否更容易理解 运行上是否正确

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