簡體   English   中英

為什么要考慮NP,而不是P?

[英]Why is factoring in NP, but not in P?

因子:Gven一個整數N,找到整數1 <a,b <N,如果它們存在則N = ab,否則說N是素數。

我知道素數測試是在P中,但為什么不考慮因素?

這是我的算法:

For each a = 1 ... sqrt(N)
    if(N % a == 0)
        b = N/a
        add (a,b) to the result
    Endif
EndFor

它以O(sqrt(N))運行。

單個數值的輸入大小由其二進制表示的長度來度量。 確切地說,輸入數值n的大小與log_2(n)成比例。 因此,您的算法在指數時間內運行。

例如,假設我們使用您的算法計算N個數。 如果N是素數,則必須至少測試sqrt(N)因子。 (或者,您可以為此計算素數表,但它仍然不是線性的)。

無論如何,你測試sqrt(N)次。 但問題的大小定義為S=log2(N) 所以我們有N=2^S 因此它是一個sqrt(2^S)=2^(S/2) ,它是指數的。

暫無
暫無

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

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