この応答は私の以前の答えとは無関係です。コメントで@Kavehの懸念に対処することが目標です。
数字が必要な場合は簡単に実行できますが、log n個の数字を記録してもその方法はわかりません。lognloglogn
同様の懸念がありました:
使用される削減はクック削減です。カープ縮小を使用して証明を実行することに興味があるかもしれません。
(カープ削減は意思決定の問題のためです。ここで、カープ削減とは、単一クエリのクック削減を意味します。非標準の用語でごめんなさい!)
以下の回答は、ここでの議論に基づいています:https : //math.stackexchange.com/questions/54580/factoring-some-integer-in-the-given-interval。
この回答では、因数分解から決定論的ポリニアル時間のカープ削減を提供します、因数分解によって表される2つの整数の合計の因数分解ます。ただし、1つ問題があります。証明の過程で、次の数論的仮定を使用します。
Cramérの予想:連続する2つの素数およびp n + 1に対して、p n + 1 − p n = O (log 2 p n)があります。pnpn+1pn+1−pn=O(log2pn)
してみましょう入力する、とlet のn = | N | = O (log N )。Cramérの予想では、十分に大きいNに対して、区間[ N − log 3 N 、N ]に少なくとも1つの素数があります。この間隔の長さはlog 3 N = O (n 3)です。したがって、この素数は総当たりで決定論的な多項式時間で見つけることができます。Nn=|N|=O(logN)N[N−log3N,N]log3N=O(n3)
x[N−log3N,N]y=N−x
0≤y≤log3N|y|=O(loglogN)=O(logn)y
(x,y)N=x+y