私は、コードで完全な初心者だ、だから私は、私はプロジェクトオイラーの問題を解くことによって、より良い得ることができると思った、私は13195の素因数は5です」という質問3.プロジェクトオイラーQ3 Pythonの非常に遅い
に貼り付けました。 、7,13、および29です。 番号600851475143の最大の素因数は何ですか?
私のコードは小さい数値の例でも動作しますが、大きなものを試してみると永遠に実行されますが、どうすればコードを効率的にすることができますか?
n=3 #factors
l=[]
flag = True
while(n<600851475143):
a=3
if (600851475143%n==0):
while(a<n):
if n%a!=0:
a+=2
else:
flag = False
break
if(flag):
l.append(n)
n+=2
print(l[len(l)-1])
あなたがコーディングに新しく追加され言うように、その後、それらの課題の多くは、数学への洞察を必要とするため、プロジェクトオイラーの問題に取り組むよりも、あなたのスキルを向上させることのより良い方法がある場合は、最適化、または他の分野で、少なくとも私の意見では。できるだけ純粋なプログラミングであるチュートリアルやエクササイズを探すべきです。いずれにしても運が最高です! –
Big Oの特に共通機能のセクションのセクションをチェックしてください。https://en.wikipedia.org/wiki/Big_O_notation – quantik
ええ、2つの 'while'ループがネストされています。これは入力値の2乗で増加します。ループ中にアイデアを1つにまとめることができるかどうかを確認してください。 –