の解決策を見つけたいSpoiler alert Euler #41 problem
。私が尋ねた質問は、それのサブ問題です。質問に対する解決策はありますが、問題は解決策にあります。これが私がチェックしている実際のものです: -
large = 0
x = ''
for i in range(1,10):
x += '%d' %i
for perm in permutations(x):
if(isPrime(int(perm))):
large = perm
print large
ここに順列関数があります:-
def permutations(val):
res = []
if len(val) == 1:
res = [val]
else:
for i, c in enumerate(val):
for perm in permutations(val[:i]+val[i+1:]):
res += [c+perm]
return res
上記のプログラムは、1 から 987654321 までの順列で、すべての素数の順列を見つけます。
しかし問題は大=7652413以降で、大ではそれ以上の伸びはありません。プログラムは約 3 秒でこの値に到達しますが、プログラムは約 4 分で完了します。そこで、この時間を短縮する方法はないかと考えていました。
この質問は、関数が目的の結果を得るのに時間がかかりすぎているかどうかを示す関数を見つける方法として一般化することもできます。