第1个回答 2012-03-18
这个有两个算法
一个是每个数都判断,这个运行时效长一点,
一个是去除法,也就是把能整出2~7的都去除,所剩下的就是2~100内的素数了
解释一下,为什么是2~7。100以内,判断100是否是素数的时候,结束条件是根号100以内(也就是10)就可以。可以参考素数的求法
挑出能整出2~10的就可以了,因为2,3,4,5,6,7,8,9,10,折是个数4 6 8 9 10折几个数在前面都可以删除掉,其实只判断是否整出2 3 5 7折几个就可以了
第一个方式
int i,m;
int a[50],t=0;
for(i=0;i<=100;i++)
{
for(m=2;m*m<=i;m++)
if(i%m==0)
break;
if(m*m>i)
a[t++]=i;
}
最后算出a中有t个数,是素数
第二种
int a[100];
int i,j;
for(i=0;i<100;i++)
a[i]=i+1;
a[0]=0; //1不是素数
for(i=2;i<=7;i++)
for(j=i;j<100;j++)
if(a[j]%i==0)
a[j]=0; //这样,把不是零的打印出来就可以了
for(i=1;i<100;i++)
if(a[i]!=0)
printf("%6d",a[i]);本回答被提问者和网友采纳
第2个回答 2012-03-16
int n,m;
for (n = 3;n<=100; n++)
{
for(m = 2;m<n; m++)
{
if(n%m == 0)
{
break;
}
}
if(m >= n)
{
printf("%d\t",n);
}
}
要的是这个吗?