Python演習4.4が「Goldbach予想」を検証

数学における有名な「ゴールドバッハ予想」は、おおよそ2より大きい偶数は常に2つの素数の合計として表現できることを意味します。例:24 = 5 +19。5と19は素数です。この実験のタスクは、20億以内の偶数が2つの素数の合計に分解できることを検証するプログラムを設計することです。

入力フォーマット:

入力は、連続して範囲(2、20000 000 000)の偶数Nを与えます。

出力フォーマット:

1行で、「N = p + q」の形式に従ってNの素数分解を出力します。ここで、p≤qはすべて素数です。また、そのような分解は一意ではないため(たとえば、24は7 + 17に分解することもできます)、すべての解の中で最小のpを持つ解を出力する必要があります。

コードは次のとおりです:私のコード

#!/ usr / bin / python 
#-*-コーディング:utf-8-*-
 
s = int(input())

s1 = list()

for i in range(2、s):
    v = True 
    for j for range (2、int(i ** 0.5)):if i%j == 0:
            v = False if v:
        s1.append(i)
for i for range(0、len(s1)):if s-s1 [ i] in s1:
         print( " {:d} = {:d} + {:d} " .format(s、s1 [i]、s-s1 [i]))
        ブレーク
        
    

    

私が初めて書いたものを分析します。

1.前のスタイルと同じように、空のリストを作成し、フィルターされた素数をその中に入れます。

2.入力数から素数を減算し、結果が素数リストにある場合は出力します。

ただし、少数をテストすることは可能であり、多数をテストするとタイムアウトになります。その素数のスクリーニングは時間の無駄です。

CSDN https://tuenity.blog.csdn.net/article/details/102607545を参照してください

2番目のコードは次のとおりです。

#!は/ usr / binに/のpython 
# - * -コーディング:UTF-8 - * - 
N = INT(入力())デフ isPrime(N):
     もし N <= 1:
         リターン
    範囲のiについて(2、( INT(N ** 0.5)+1)):もし N%I == 0:
             リターンリターン真の
範囲内のx(2、N):
    Y = N - X なら isPrime(X)== 1及びisPrime( y)== 1:
         印刷( " {:d} = {:d} + {:d} " .format(n、x、y))
        ブレーク


        

    

このコードを分析します。

1.入力数が素数かどうかを判断する関数を定義します。

2.次に、2つの数値を加算して総計を決定します。

アントラセン、このように実行することは本当に時間と労力の節約です。

しかし、この質問の時点では、コースのスケジュールはまだ機能していません。o(∩_∩)oははは


常に本とフィットネスが道路にあります

おすすめ

転載: www.cnblogs.com/Renqy/p/12732501.html