p = []
for x in range(1, 50000000):
count = 0
for y in range(1, x // 2 + 1):
if (x % y == 0):
count += y
if (count == x):
p.append(x)
これは、1 から 50000000 の間で発生するすべての完全数を見つけようとする私のコードです。最初の 3 つの数字は正常に機能し、それらは 1 から 10000 の間です。しかし、進行するにつれて非常に遅くなります。10 秒ごとに 1000 個の数字を処理するようなものです。その後、最終的に 5 秒ごとに 10 個の数字を通過します。
とにかくこれをより速くすることができますか?x を 2 で割って、半分を超えないようにする (x の倍数にはならない) など、いくつかの小さなものを含めてみました。