#ここでエンゲージメント番号が表示されます。これは、一方の数値の真の因数の合計がもう一方の数値より 1 多い数値のペアです。これらのペアを見つける必要があります。
たとえば、このペアは (48, 75) のようなものです。したがって、48 の約数は {1, 2, 3, 4, 6, 8, 12, 16, 24} となり、合計は 76 になります。同様に、75 の約数は {1, 3, 5, 15, 25} なので、合計は 49 になります。 アルゴリズムエンゲージドペア (n) -begin for num in range 1 to n, do sum := 1 for i in range 2 to num, do if num is divisible by i, then sum := sum + i if i * i is not same as num, then sum := sum + num / i end if end if if sum > num, then num2 := sum – 1 sum2 := 1 for j in range 2 to num2, do if num2 is divisible by j, then sum2 := sum2 + j if j * j is not same as num2, then sum2 := sum2 + num2 / j end if end if done if sum2 = num + 1, then print the pair num and num2 end if end if done done end例
#include <iostream> using namespace std; void BetrothedPairs(int n) { for (int num = 1; num < n; num++) { int sum = 1; for (int i = 2; i * i <= num; i++) { //go through each number to get proper divisor if (num % i == 0) { sum += i; if (i * i != num) //avoid to include same divisor twice sum += num / i; } } if (sum > num) { int num2 = sum - 1; int sum2 = 1; for (int j = 2; j * j <= num2; j++){ if (num2 % j == 0) { sum2 += j; if (j * j != num2) sum2 += num2 / j; } } if (sum2 == num+1) cout << "(" << num << ", " << num2 <<")" << endl; } } } int main() { int n = 5000; BetrothedPairs(n); }
1
以上がC プログラムでのエンゲージメントの数は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。