if (x > 0)
{
while (ctong[1] != d)
{
if (atong[1] = 0)
fill(ctong, atong);
else if (btong[1] = btong[0])
fill(btong, ctong);
else
fill(atong, btong);
++step;
cout << "step: " << step << endl
<< "atong,btong,ctong: " << atong[1] << " " << btong[1] << " " << ctong[1] <<
endl;
}
}
else
{
while (ctong[1] != d)
{
if (btong[1] = 0)
fill(ctong, btong);
else if (atong[1] = atong[0])
fill(atong, ctong);
else
fill(btong, atong);
++step;
cout << "step: " << step << endl
<< "atong,btong,ctong: " << atong[1] << " " << btong[1] << " " << ctong[1] <<
endl;
}
}
}
4.素数的快速测试----Miller-Rabbin 算法
同余 若 a mod c=b mod c,称 a 和 b 关于模 c 同余,记作 a≡b(mod c).
伪素数 对正整数 n,如果 a
n-1
≡1(mod n) ,则称 n 是基于 a 的伪素数。如果一个数是
伪素数,它几乎肯定是 素数。另一方面,如果一个数不是伪素数,它一定不是素数。
伪素数,又叫做伪质数:它满足费马小定理,但其本身却不是素数。最小的伪素数是
341。有人已经证明了伪素数的个数是无穷的。事实上,费马小定理给出的是关于素数判定的
必要非充分条件。若 n 能整除 2^(n-1)-1,并 n 是非偶数的合数,那么 n 就是伪素数。第一个
伪素数 341 是萨鲁斯(Sarrus)在 1819 年发现的。
如果 p 是一个素数,且 a 不能被 p 整除,则 a^(p-1)-1 能被 P 整除(等价的说法是 a^p
-a 能被素数 p 整除)
第 5 页 共 34 页
评论1
最新资源