慕粉4487960
2019-08-19 15:41
#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;
}
这个我我试过了,匝一想是可行的,后来我看了下发现问题 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 。
所以这样写还是行不通的。
直接在下面加一个if(m=n)判断就可以了
先不提正确结果怎么出来,但是if(m%n==0 ,m == n)这是什么东西?
C语言入门
926206 学习 · 20797 问题
相似问题