筛法求100之内素数中的一个问题
我自学C快两个月了,回头找练习做发现很多不懂。第7章数组有个用筛法求100之内素数的题目。
下面是课本习题集上的答案。
想了很久都不明所以,请大哥大姐们指点下啊。
**********************************(1)
#include<math.h>
main()
{ int i,j,a[101],n=0;
for(i=1;i<=100;i++)
a[i]=i;
for(i=2;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)
{if(a[j]!=0 && a[i]!=0) /*我觉得这里还要说if(a[j]!=0 && a[i]!=0)多余 上两句不是有I从2J从I+1开始,又用I++增吗那不是明显大于0?可我删掉这句时却运行出错*/
if(a[j]%a[i]==0) /*这里我又觉得可以设余数不等于0,就说明a[j]是素数了再直接输出a[j] 不知道可以不?*/
a[j]=0;}
printf("\n");
for(i=2;i<=100;i++)
{ if(a[i]!=0)
{printf("%5d",a[i]);
n++;}
if(n==10)
{printf("\n");
n==0;}
}
}
***********************************(2)
基于上面所说,我就改成这样下面两种都不行。
#include<math.h>
main()
{ int i,j,a[101],n=0;
for(i=1;i<=100;i++)
a[i]=i;
for(i=2;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)
{ if(a[j]%a[i]!=0)
{ n++;
printf("%4d",a[j]);
}
if(n%5==0) printf("\n");
}
printf("\nthere are %d prime_number from1_100.",n);
}
**************************************************(3)
#include<math.h>
main()
{ int i,j,a[101],n=0;
for(i=1;i<=100;i++)
a[i]=i;
for(i=2;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)
{ if(a[j]%a[i]!=0)
{ n++;
printf("%4d",a[j]);
}
if(n%5==0) printf("\n");
}
printf("\nthere are %d prime_number from1_100.",n);
}