当前位置: 代码迷 >> C语言 >> [原创]请帮忙
  详细解决方案

[原创]请帮忙

热度:51   发布时间:2005-01-25 20:14:00.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; } 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&lt;stdio.h&gt;
#include&lt;math.h&gt;
void main()
{
int i,j,n,a[101];
for(i=1;i&lt;=100;i++)/*为数组a赋值0到101*/
   a[i]=i;
for(i=2;i&lt;sqrt(100);i++)/*依次检查数组a各元素是否2是9到的倍数,如果是则该元素不是素数,改其值为0*/
    for(j=i+1;j&lt;=100;j++)
       {
        if(a[i]!=0&amp;&amp;a[j]!=0)
        if(a[j]%a[i]==0)
           a[j]=0;
        }  /*经过以上处理数组中各元素不是素数就是0*/
printf("\n");
for(i=2,n=0;i&lt;=100;i++) /*打印素数*/
    {
     if(a[i]!=0) /* 如果是素数则打印,并记录已打印的素数个数*/
       {
         printf("%5d",a[i]);
         n++;
        }
     if(n==10) /*如果素数个数为10,换行,n赋值为0*/
       {
        printf("\n");
        n=0;
       }
    }
}
----------------解决方案--------------------------------------------------------
  相关解决方案