呵呵 ,我也看了下!
程序代码:
/*本函数用来输出100以内的素数*/
#include<stdio.h>
#include<math.h>
main()
{
int i,num1,j;
clrscr();
for(num1=0;num1<=100;num1++)
{
if((num1==1)||(num1/2==0))
;/*空语句*/
else
{
i=sqrt(num1);
for(j=2;j<=i;j++)/*就是这句和下面一句不能循环,这句应该和 if(num1%j==0) break;可以循环到满足条件为止的,比如num1=9时候应该循环到j为3,可是j在2时候就不做了*/
if(num1%j==0) break;//楼主在这里的想法是跳出循环,但是如果跳出后,你不做任何处理,也还是无益的
printf("%d",num1);
}
}
}
我给出令外一种改法,楼主参考下:
程序代码:
/*本函数用来输出100以内的素数*/
#include<stdio.h>
#include<math.h>
main()
{
int i,num1,j;
// clrscr(); 没什么必要了!
for(num1=0;num1<=100;num1++)
{
if((num1==1)||(num1/2==0))
;/*空语句*/
else
{
i=sqrt(num1);
for(j=2;j<=i;j++)/*就是这句和下面一句不能循环,这句应该和 if(num1%j==0) break;可以循环到满足条件为止的,比如num1=9时候应该循环到j为3,可是j在2时候就不做了*/
if(num1%j==0) goto loop;//直接跳出内层循环,并且对外层循环做类似于“continue”的处理,
printf("%d",num1);
}
loop: ;
}
}
----------------------
另外补充一下,楼主代码中的if完全没必要了,可以把num1的初值设为2就好(0,1 压根没必要就行素性判断啊)
[
本帖最后由 jack10141 于 2010-10-11 23:11 编辑 ]