谁帮忙看下这个程序错在哪?

来源:百度知道 编辑:UC知道 时间:2024/05/18 04:22:20
用筛选法求100之内素数
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,a[101];
for(i=1;i<=100;i++)
{
a[i]=i;
for(j=2;j<=sqrt(101);j++)
if(a[i]%j==0)
printf("%d ",a[i]);
}
}

#include<stdio.h>
#include<math.h>
void main()
{
int i,j,k;
for(i=1;i<=100;i++)
{
if(i==2)
printf("%3d",i);
k=(int)sqrt(i);
for(j=2;j<=k;j++)
if(i%j==0)
break;
if(j>k)
printf("%3d",i);
}
}

这是标准的穷举法,楼主的那个弄错了

#include<stdio.h>
void main()
{
int i,j;
for(i=2;i<=100;i++)
{
for (j=2;j<=sqrt(i);j++)
if (i%j==0) break;
if (j>sqrt(i)) printf("%5d", i); /* 是素数 */
}
}

2也是素数,楼主的方法是穷举法,算法效率不高.
比较好的找小素数的方法是埃拉脱斯森筛法,就是程序中所给的算法.