簡體   English   中英

如果p為質數,如何使用快速算法檢查ap + b是否為質數?

[英]If p is prime, how to check whether ap + b is prime or not using a fast algorithm?

我們有三個數字abp p是一個大質數,但abp小得多。

如何使用快速算法找出ap + b是否為質數?

我們不想使用BigInteger類之類的東西。

請注意,我們可以了解有關p的其他信息。 例如,如果m小,則可以輕松計算出p%m

這個問題更適合數學合作伙伴論壇。

如果gcd(a, b) != 1則它不是素數。

如果(a + b) % 2 != 1則它不是素數。

看着3.7 + 4不是主要的會導致另一個規則。

所以做一些數學,即

(a % b) * (p % b)

盡管p % b毫無疑問,但必須是質數。

假設 :您可以使用BigInteger類。

您可以將ap+b格式轉換為BigInteger並檢查素數。 下面是在Java中執行此操作的代碼。 由於ab在OP中不是很大,並且是int ,因此可以將它們存儲在int中。 由於p非常大,我們將其存儲在BigInteger類中

希望這可以幫助:

    String p = "2432902008176640029";   
    int a = 30, b = 101;     
    BigInteger f = new BigInteger(p);
    BigInteger f1 = f.multiply(BigInteger.valueOf(a));
    BigInteger f2 = f1.add(BigInteger.valueOf(b));
    System.out.println(f2.isProbablePrime(1));

f2.isProbablePrime(1)檢查ap+b形成的數字是否為質數,確定性為1

BigInteger類中用於檢查素數的這項技術實際上是以有效方式實施的Miller-Rabin素數測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM