这个循环不用循环这么多次
太浪费了
你和楼主犯了同样的错!为什么还说能得到正确的结果呢?
是不是输出的太多了!你只能看到最后面的几十行啊?
就这样的轻易的下了结论了!
反正我在win-tc上面没有得到正确的结果!
//用筛选法求100之内的素数.
#include<stdio.h>
#define N 101
int main(void)
{
int i,j,a[N];
printf("the numbers are:\n");
for(i=2;i<N;i++)//是否必须把i=2改为i=3
a[i]=i;
for(i=0;i<N;i++)
for(j=0;j<i;j++)
{
if(a[j]!=0)
if(a[i]%a[j]==0)
a[i]=0;
}
for(i=2;i<N;i++)
{
if(a[i]!=0)
printf("%2d ",a[i]);
}
getch();
return 0;
}
运行结果会有一个2. 因为i=2没有进行i%j的计算. 是否必须把前面的三个不输出?
[此贴子已经被作者于2006-5-22 16:12:32编辑过]
应该是这样的吧。。如果你是用WIN TC可能由于屏幕关系。。上面几位不能显示
#include"stdio.h"
#include"math.h"
main()
{int i,j;
for(i=190;i<=150;i++)
{ for(j=2;j<sqrt(i);j++)
{ if(i%j==0)
{printf("%d is not a sushu \n",i);
break;
}
else continue;
}
if(j>sqrt(i))
printf("%d is a sushu\n",i);
}
getch();
}
应该是这样的吧。。如果你是用WIN TC可能由于屏幕关系。。上面几位不能显示
#include"stdio.h"
#include"math.h"
main()
{int i,j;
for(i=190;i<=150;i++) //能正常运行?!初值大于终值,还I++?
{ for(j=2;j<sqrt(i);j++)
{ if(i%j==0)
{printf("%d is not a sushu \n",i);
break;
}
else continue;
}
if(j>sqrt(i))
printf("%d is a sushu\n",i);
}
getch();
}