นี่คือเบทโรธด์นัมเบอร์ (Betrothed numbers) คู่ของตัวเลขที่ผลรวมตัวหารที่แท้จริงของตัวหนึ่งมากกว่าอีกตัวหนึ่ง 1
ตัวอย่างคู่ (48, 75) ตัวหารของ 48 คือ {1, 2, 3, 4, 6, 8, 12, 16, 24} ผลรวม 76 ตัวหารของ 75 คือ {1, 3, 5, 15, 25} ผลรวม 49
อัลกอริทึม
BetrothedPairs (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
ตัวอย่างโค้ด C++
#includeusing namespace std; void BetrothedPairs(int n) { for (int num = 1; num < n; num++) { int sum = 1; for (int i = 2; i * i <= num; i++) { // ตรวจสอบแต่ละตัวเพื่อหาตัวหารแท้จริง if (num % i == 0) { sum += i; if (i * i != num) // หลีกเลี่ยงนับตัวหารซ้ำ 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