2017-10-11 30 views
0

一種混亂的標題,所以我會試着更好地解釋一下: 使用楊輝三角我發現我可以檢查一個數是否是使用下列公式黃金:有沒有一種方法來檢查二進制除法當整數是所有的?

boolean isPrime= (2^(x) -2) % x == 0; 

然而,因爲這個工作對2的冪,就變得非常大非常快,有點扭捏左右,我發現我可以用X> 2以下公式後:

boolean isPrime = (2^(x-1) -1) % x==0; 

這不是改變了很多,但是在計算前mod x中的二進制數是全1(對於x = 7,它將是63或11111 1在二進制)

現在我的問題是如果有一個簡單的方法來利用這一點,並創建一個準確的函數來確定一個數字是否是一個素數。

+1

您剛剛重新發現了費馬測試:https://en.wikipedia.org/wiki/Fermat_primality_test請注意,2 ^(x-1)%x == 1不證明x的素數。 – Henrik

+4

請閱讀「通過平方排列的模數求冪」。這種事情可以非常有效地完成(否則RSA將不實際)。費馬的測試不是很好,但與此相關的想法導致了Miller-Rabin測試,這在實踐中被大量使用。 –

回答

相關問題