|
源程序:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
bool isprime(int n)
{
int i;
for(i=2;i<(int)(sqrt((float)n)+1.0);i++)
{
if(n%i==0){return 0;}
}
return 1;
}
int isjprime(int i)
{
int j=1,prime,on,jprime=0;
if(isprime(i))
{
prime=i;
on=prime;
while(j<6*i)
{
on=on*5+1;
while(on%2==0)
{
on/=2;
}
if(on==prime)
{
jprime=prime;
break;
}
j++;
}
if(jprime!=0)
{
printf("jprime=%d\n",jprime);
return jprime;
}
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int i, n;
for(n=0;n<10000;n++)
{
i=2*n+1;
isjprime(i);
}
getchar();
return 0;
}
这个程序应该是没错的。因为3, 13, 17, 43, 83最开始就直接得出来了,一点都没错,我想后面的就不可能有错了。 |
|