求助C语言编程,求101--200间的素数

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:22:54
main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
{
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;
break;
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nThe total is %d",h);
}
源程序如上:我的问题是“它怎么通过if(leap)来确保每个素数只输出一个次?我认为,例如m=101,当i=2时,应该输出一次101,当i=3时,也应该输出一次101吧,就这里实在想不明白,请高人赐教。谢谢了!”

for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;
break;
}
请注意 FOR循环只循环到这里,不控制下面的IF(LEAP)
要FOR循环执行完 才执行下面的IF(LEAP)

应该是不会 重复的输出一个同样的数

你不是有跳出循环break了么?

不会执行i=3了

它是看leap有没有改变来决定是否为质数
当m%i==0 leap就会被reset并且终止
所以最后跳出回圈后只印出一次质数

你不是有跳出循环break吗,它表示从循环体内跳出循环体,提前结束循环,接着执行后面的语句