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

这样运行成功,输入错误,错在哪里?

#include <stdio.h>

int main()

{

    int m, n;

    for(m=2; m<=50; m++)

    {

for(n=2; n<m; n++)

       

{

        if(m%n==0 ,m == n)   //n循环结束后,如果m=n的话就输出m

            printf("%d  ", m);

}

}

return 0;    

}


提问者:慕粉4487960 2019-08-19 15:41

个回答

  • 坚持下去灬
    2019-08-22 13:16:40
    已采纳

    这个我我试过了,匝一想是可行的,后来我看了下发现问题  if里的等式是不成立的 m==n 是不可能的,因为在上面for  你已经定了 n<m  所以是不可能出现 n==m的情况的。所以你运行成功输出错误。  

    那么把上面的 n<m  换成n<=m 可行吗?   会输出东西,但是不是我们想要的素数。  你会发现  输出的结果是  2 3 4 5 6 7 。。。。     if(m%n==0 ,m == n)  因为每一个都可以被自身整除m%n==0    并且都可以成立 n=m 。

    所以这样写还是行不通的。

  • qq_宝慕林436213
    2019-08-19 16:04:12

    直接在下面加一个if(m=n)判断就可以了


  • 小小疾飞
    2019-08-19 15:59:46

    先不提正确结果怎么出来,但是if(m%n==0 ,m == n)这是什么东西?