数値が素数でない場合、アルゴリズムの繰り返しでx
「はい」になる確率は です。n
(1/4)^n = 4^(-n) = 2^(-2n)
したがって、 を達成したい場合、実際には最大 の確率で偽陽性1-(1/k)
を探していることになり、上記から次のことが必要になります。1/k
2^(-2n) <= 1/k //log_2 on both sides:
-2n <= log(1/k) = log(1)-log(k) = 0 - log(k)
2n >= log(k)
n >= log(k)/2
したがって、 の確率で真陰性を保証するために、n
可能な限り最小の整数を選択する必要があります。n >= log(k)/2
1-1/k
(注: すべてlog()
ベース 2 です)。
例:
99% の確率で正しくなりたい場合は、実際には1-1/k=0.99
, so1/k=1/100
およびを探していますk=100
。
ここで、上記の式によると、 に注意してください。log_2(100) ~= 6.64
したがって、最小n
のものn >= log_2(100)/2
はn==4
です。
つまり、99% を達成するには、アルゴリズムを 4 回繰り返す必要があります。
これが正しいことを確認しましょう:
- 最初に、確率が実際に 99% を超えていることを確認し
1-(1/4)^4 = 1-(1/256) ~= 0.996 >= 0.99
ます。したがって、確率は問題ありません。
- より小さな整数 (n==3) の場合、99% の正解より悪い結果になることを
1-(1/4)^3 = 1-1/64 ~= 0.984 < 0.99
確認してくださいn==3
。