ゴール
入力を受け取るプログラム/関数を作成し、整数のランダムなペアが比較的素数であるN
かどうかを確認しN
、を返しますsqrt(6 * N / #coprime)
。
TL; DR
これらの課題は、Piを概算するために自然と脳(およびおそらく再利用可能なリソース)のみを必要とするアルゴリズムのシミュレーションです。ゾンビの黙示録中に本当にPiが必要な場合、これらの方法は弾薬を無駄にしません!さらに8つの課題があります。推奨事項を作成するには、サンドボックスの投稿をチェックしてください。
シミュレーション
何をシミュレートしていますか?さて、2つのランダムな整数が比較的素数(すなわち、コプライムまたはgcd == 1)である確率は6/Pi/Pi
です。それらを数える; gcdが1 かどうかを確認します。繰り返す。これを数回繰り返した後、sqrt(6.0 * total / num_coprimes)
に向かう傾向がありPi
ます。黙示録的な世界で平方根を計算するのが不安になっても心配しないでください!そのためのニュートン法があります。
これをどのようにシミュレートしますか?
- 入力してください
N
- 次の
N
時間を実行します。- ランダムな正の整数を均一に生成し
i
、j
- と
1 <= i , j <= 10^6
- もし
gcd(i , j) == 1
:result = 1
- その他:
result = 0
- ランダムな正の整数を均一に生成し
N
結果の合計を取り、S
- 戻る
sqrt(6 * N / S)
仕様
- 入力
- 柔軟で、標準的な方法(関数パラメーター、STDINなど)および標準的な形式(文字列、バイナリなど)で入力を取得します。
- 出力
- 柔軟性があり、標準的な方法(例:返品、印刷)で出力します。
- 空白、末尾および先頭の空白は許容されます
- 精度、少なくとも小数点以下4桁の精度を指定してください(例
3.1416
)
- 得点
- 最短のコードが勝ちます!
テストケース
偶然の偶然により、出力がこれらと一致しない場合があります。しかし、平均して、の与えられた値に対してこれほどの精度を得る必要がありN
ます。
Input -> Output
----- ------
100 -> 3.????
10000 -> 3.1???
1000000 -> 3.14??
N=10^6
ます。
N = 1000000
それともプログラムN
が大きすぎる場合にスタックオーバーフローなどを返す場合は大丈夫ですか?