|
[这个贴子最后由pdshjf在 2008/11/19 08:45pm 第 1 次编辑]
int _tmain(int argc, _TCHAR* argv[])
{
UINT prime[23] = {13,17,19,31,61,89,107,127,521,607,1279,2203,2281,3217,4253,4423,9689,9941,11213,19937,21701,23209,44497};
Super A(1),B,C;
//卢卡斯-莱默测试(Lucas-Lehmer testing)
for(int i=0;i<23;i++)
{
A = 1;
for(UINT j=0;j<prime;j++)
A = A*2;
A = A - 1;
C = 4;
for(UINT j=0;j<prime-2;j++)
{
C = C * C;
C = C - 2;
C = C % A;
}
if(C == UINT(0))
printf("M%i\n",prime);
else
printf("Not M%i\n",prime);
}
getchar();
}
程序运行结果:
M13
M17
M19
M31
M61
M89
Not M107
M127
Not M521
Not M607
Not M1279
M2203
Not M2281
Not M3217
M4253
Not M4423
Not M9689
M9941
Not M11213
Not M19937
Not M21701
Not M23209
Not M44497
|
|