写一个判别素数的函数

写一个判别素数的函数,函数参数为一个整数,返回值为0(整数不是素数)或1(整数是素数)。调用这个自定义函数来判别并输出任意两个数间的所有素数。

以下代码供参考:
#include <stdio.h>
/*判断是否素数的函数,返回值为0(整数不是素数)或1(整数是素数)*/
int IsPrime (int m)
{
int i;
if (m == 2) return 1;
if (m == 1 || m % 2 == 0) return 0;
for (i = 3; i * i <= m;)
{
if (m % i == 0) return 0;
i += 2;
}
return 1;
}
void main ()
{
int n,num;
scanf("%d&d",&n,&num); //输入任意两个数, n小于num
while(n<num)
{
if(IsPrime(n))
{
printf("%d\n",n);
}
n++;
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-30
较快的Wilson改进判定法:
#include<stdio.h>
#include<math.h>
void main()
{long i,k=1,n,s,r,p,T=1000000;printf("2,");
for(n=3;n<=T;n=n+2){r=1;s=sqrt(n);p=n/2;
for(i=3;i<=s;i=i+2){r=(r*i)%n;if(r>p){r=n-r;}}
if(r>1)goto a;if(r==1){k++;printf("%ld,",n);}goto zhuan;
a:s=n;an:s=s%r;if(s>1){i=s;s=r;r=i;goto an;};
if(s==1){printf("%ld,",n);k++;}
zhuan:;}
printf("k=%ld,\n",k);getch();}
两个素数之间间隔:
d<=(lnpn)^2
相似回答