慕粉1470407156
2017-02-08 22:51
#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
break;
}
if(m == n)
printf("%d ", m);
}
return 0;
}
这串代码运用了循环嵌套 外层的m循环一次,内层的n开始循环,注意子循环中的if语句,当n循环到m除以n余数为0时停止,开始执行下一条 if语句,如果m等于n,则m为素数,输出m;若m不等于n,则m不为素数,则返回父循环,继续循环。 举个例子: 如果m循环到3,n从2开始循环。n=2时,m除以n余数不为0,继续循环,当n循环到3是,m除以n余数为0;则停止循环 ,开始循环下一条if语句,m等于n等于3,(m==n)结果为真,则输出3,3为素数。 如果m循环到4,n从2开始循环。n=2时,m除以n余数为0,则停止循环;开始循环下一条if语句,m等于4,n等于2, m不等于n,(m==n)结果为假,则返回父循环继续循环m,4不为素数。
那是因为n循环到m-1时,会继续进行n++,当n=m时,执行判断n<m,不成立,终止循环,这时就有n=m了。
请问子循环条件中n<m,当m=3,n=3不符合条件呀怎么继续判断?
C语言入门
926028 学习 · 20793 问题
相似问题