#include<stdio.h> #include<math.h> void main() { int i,j,n,a[101]; 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[i]!=0&&a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } printf("\n"); for(i=2,n=0;i<=100;i++) { if(a[i]!=0) { printf("%5d",a[i]); n++; } if(n==10) { printf("\n"); n=0; } } }
完全看不懂呀,请教教我呀,~~~~~~~~~~~~~~
----------------解决方案--------------------------------------------------------
#include<stdio.h> #include<math.h> void main() { int i,j,n,a[101]; 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[i]!=0&&a[j]!=0) if(a[j]%a[i]==0) a[j]=0;//找到2以后的100以内的合数将其替换成0 } printf("\n");
for(i=2,n=0;i<=100;i++) { if(a[i]!=0) { printf("%5d",a[i]);//将所有的素数打印出来 n++; } if(n==10)//每打印10个数换行 { printf("\n"); n=0; } } }
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,n,a[101];
for(i=1;i<=100;i++)/*为数组a赋值0到101*/
a[i]=i;
for(i=2;i<sqrt(100);i++)/*依次检查数组a各元素是否2是9到的倍数,如果是则该元素不是素数,改其值为0*/
for(j=i+1;j<=100;j++)
{
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
} /*经过以上处理数组中各元素不是素数就是0*/
printf("\n");
for(i=2,n=0;i<=100;i++) /*打印素数*/
{
if(a[i]!=0) /* 如果是素数则打印,并记录已打印的素数个数*/
{
printf("%5d",a[i]);
n++;
}
if(n==10) /*如果素数个数为10,换行,n赋值为0*/
{
printf("\n");
n=0;
}
}
}
----------------解决方案--------------------------------------------------------