#include "Stdio.h"
#include "Math.h"
main()
{
int a[100],i,j,n=0;
for (i=1;i<=100;i++)
{
for (j=2;j<sqrt(i);j++)
{
if ( i%j ==0 ) break;
}
if (j>=sqrt(i)+1 )
{
a[n]=i;
printf("%d is a prime number\n",a[n]); // 输出素数
n++ ;
}
}
printf ("there is %d primes",n); //输出共有共有多少个素数
getch();
}
运行结果是1 is a prime number
就这一个
[此贴子已经被作者于2007-1-28 20:04:44编辑过]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <math.h>
int main(void)
{
int i,j,temp;
int top=1;
for(i=2;i<=100;i++)
{
temp=(int)sqrt(i);
for(j=2;j<=temp;j++)
if(i%j == 0)
{
top=0;
break;
}
else
top=1;
if(top==1)printf("%d ",i);
}
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
Eratosthenes筛选法。
假设要计算从0到max(max>2)以内所有的素数。首先,Eratosthenes筛选法把指定范围内的所有数都标记为素数。然后,从数字2开始,标记所有2的倍数为非素数;标记完后,再从下一个素数开始标记它们的倍数。重复该过程,直到所有的素数都被处理完。上述过程结束后,就已经标记出了所有素数和非素数。
这把我用C++写的一个,很容易改写成C的
http://blog.chinaunix.net/u/18517/showart_231803
----------------解决方案--------------------------------------------------------
我写的程序,最后求得在100一下素数的总数为26,不知道对不对.
#include <stdio.h>
int main(void)
{
int a,s=0;
int b,k;
int d=0;
if(a==1||a==2||a==3)
{
printf("\n the number is su shu!");
}
else
{
for(a=3;a<=100;a++)
{
k=a;
for (k=2;k<=a/2;k++)
{
if(a%k==0)
{
printf("\n%d is not a sushu,please input another number!",a);
d++;
break;
}
}
s=100-d;
}
printf("\nthe number of nonsushu is%d",d);
printf("\nthe sushu's total number is %d",s);
}
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
更正一下啊,虽然结果没有影响,但是上面的程序是我以前写的判断素数的程序改来的,有点冗余,
下面的是改正过后的程序:
#include <stdio.h>
int main(void)
{
int a,s=0;
int b,k;
int d=0;
for(a=3;a<=100;a++)
{
k=a;
for (k=2;k<=a/2;k++)
{
if(a%k==0)
{
printf("\n%d is not a sushu,please input another number!",a);
d++;
break;
}
}
s=100-d;
}
printf("\nthe number of nonsushu is%d",d);
printf("\nthe sushu's total number is %d",s);
getch();
return 0;
}
----------------解决方案--------------------------------------------------------