は、内側ループはO(N)回実行し、各時間iが(実際に保守的な上限として、これは確かに時間的に一部算出する仕事量N MOD行うことができないことなぜそれは、対数の底はアルゴリズムの時間複雑さを見つけるのに常に2と見なされますか?
function isPrime(n):
for i from 2 to n - 1:
if (n mod i) = 0, return false
return true
、このコードを検討しますO(n^3))。したがって、この全体的なアルゴリズムは時間O(n^4)で実行され、場合によってはより高速に実行されます。
私たちのアルゴリズムは時間O(n^4)で実行されますが、それは入力ビット数の関数として何ですか?まあ、数nを書き出すには、O(log n)ビットが必要です。したがって、入力nを書き出すのに必要なビット数をxとすると、このアルゴリズムの実行時間は実際にはO(2 ^(4x))であり、xの多項式ではありません。ここ
私の質問は
は番号を書き込むには、Nビットで、それはnビットを記録(ベース10)を取る必要があります。したがって、xをビット数とすると、実際の実行時間はO(10 ^(4x))でなければなりません。これはO(2 ^(4x))とは大きく異なります。どのようにしてこのような近似をすることができますか?あなたが任意に大きな数字(ひいてはBIGNUMライブラリ)を使用していない限り
「10 ^(4x)」と「2 ^(4x)」はどこで入手できましたか?これは、[超多項式時間の複雑さ](https://en.wikipedia.org/wiki/Time_complexity#Superpolynomial_time)では時間の複雑さを記録しないことになります。 – CoryKramer
"ビット数nを書き込むには、ログnビット(ベース10)を取る必要があります。番号nは、log10(n)桁とlog2(n)ビットです。 –