2017-11-27 4 views
0

私はミルの定数を使って素数を計算するプログラムを作成しましたが、とにかく膨大な計算が行われます。たとえば、1.306 ... ** 5661Python 3での計算からオーバーフローエラーを修正する方法はありますか

オーバーフローエラーが発生します。これをどうすれば解決できますか?私はxrangeを試してみましたが、それはPython 3にはもう存在しないので私を助けませんでした。私はそれを減らす方法を知らない。

誰でも私に助けを与えることができますか?どうもありがとう!

編集:ここにコードがある:

theta = 1.3063778838630806904686144926026 

bottom = int(input("lower bound: ")) 
top = int(input("high bound: ")) 

for i in range(0,top + 1): 
    print(round(theta ** (3**i))) # causes the error 
+0

ポストは、質問と一緒にあなたのコードとそれがあなたの質問 – Ram

+0

に問題が、私はちょうどコード – Lincoln

+1

はこちらを参照してください掲載いただきました!他の人が見に役立ちます。https://stackoverflow.com/questions/20201706 –

答えて

1

整数を使用してMillの素数を計算する方法は次のとおりです。まず、ミル定数を分数として書く必要があります。 Wikipedia articleの値のいずれかを使用しました。

num, den = 1551795687, 1187861266 
print(num/den) 

for i in range(1, 8): 
    e = 3 ** i 
    n = num ** e 
    d = den ** e 
    print(i, n // d) 

出力

1.3063778838630806 
1 2 
2 11 
3 1361 
4 2521008887 
5 16022236204009819034551083884 
6 4113101149215105495247660946168530631843333312378291569324941703732418013747202413154 
7 69583804376962776892757521964751417769589800913915250464742380681561387050414758147961918413247296927859465626141517084928624751186191429632740787663513270579366994745400890812584434492059975056388739246886951607326825627525396066637918379217513934013930 

は、あなたがより良い出発画分を使用する必要があります、より正確な計算を実行するには、それはndはさらに急速に成長するようになります。

0

は、@PM 2Ringと@Blurpをありがとう!あなたは私が必要としていた小数点モジュールを指摘することによって多くの助けになりました! 559397567061773305900 ...が素数であることが判明しました!

関連する問題