0

すべて友好的なペア (n、m)、n < m、2 <= n <= 6500 万であると私が信じているものを見つけるために使用したコードを参照してください。私のコード: http://tutoree7.pastebin.com/wKvMAWpT。見つかったペア: http://tutoree7.pastebin.com/dpEc0RbZ

私のラップトップでは、100 万件の追加ごとに 24 分かかっていることがわかりました。事前に除外できる n の数がかなりあることを願っています。これは近いですが、葉巻はありません。「5」で終わらない奇数の n. これまでのところ、反例のペアは 1 つしかありませんが、多すぎます: (34765731、36939357)。フィルターとして、すべての n の 40% を除外します。

必ずしもそれらを実装するための Python コードではなく、いくつかのアイデアを期待しています。

4

3 に答える 3

0

これは、友好的なペアを見つけるためのすべての最適化手法をまとめた素晴らしい記事です

サンプル C++ コード付き

10^9 までのすべての友好的な数字を 1 秒以内に見つけます。

于 2015-11-24T10:23:00.760 に答える
0
def findSumOfFactors(n):
    sum = 1
    for i in range(2, int(n / 2) + 1):
        if n % i == 0:
            sum += i
    return sum

start = int(input())
end = int(input())

for i in range(start, end + 1):
    for j in range(end, start + 1, -1):
        if i is not j and findSumOfFactors(i) == j and findSumOfFactors(j) == i and j>1:
            print(i, j)
于 2016-08-11T03:48:43.380 に答える