Math 当整数都是1时,有没有办法检查二进制可除性?

Math 当整数都是1时,有没有办法检查二进制可除性?,math,primes,Math,Primes,这是一个令人困惑的标题,所以我将尝试更好地解释自己: 使用帕斯卡三角形,我发现我可以使用以下等式检查一个数字是否为素数: boolean isPrime= (2^(x) -2) % x == 0; 然而,因为它是2的幂运算,所以它很快就会变得非常大,经过一点调整后,我发现我可以使用下面的公式来表示x>2: boolean isPrime = (2^(x-1) -1 ) % x==0; 这并没有太大变化,但是在计算mod x之前,二进制中的数字都是1(对于x=7,它将是63,或者二进制中的

这是一个令人困惑的标题,所以我将尝试更好地解释自己: 使用帕斯卡三角形,我发现我可以使用以下等式检查一个数字是否为素数:

boolean isPrime= (2^(x) -2) % x == 0; 
然而,因为它是2的幂运算,所以它很快就会变得非常大,经过一点调整后,我发现我可以使用下面的公式来表示x>2:

boolean isPrime = (2^(x-1) -1 ) % x==0; 
这并没有太大变化,但是在计算mod x之前,二进制中的数字都是1(对于x=7,它将是63,或者二进制中的111111)


现在我的问题是,是否有一种简单的方法可以利用这一点并创建一个精确的函数来确定一个数字是否为素数。

不,没有简单的方法可以利用您注意到的关系来创建一个精确的素数测试

例如,当n=561=3×11×17时,函数会错误地报告n为素数


您将需要查看和和素性测试。

您刚刚重新发现了费马测试:注意2^(x-1)%x==1并不能证明x的素性。请阅读通过平方进行的模幂运算。。这类事情可以非常有效地完成(否则RSA将不实用)。费马的测试不是很好,但与之相关的想法导致了米勒-拉宾测试,该测试在实践中大量使用。