Friendly pair
Learn how to solve the 'Friendly pair' problem. This detailed resource details brute force and optimized approaches.
Problem Statement
Write a function is_friendly_pair(a, b) that takes two positive integers a and b and returns True if they form a friendly pair, or False otherwise. Two numbers form a friendly pair if they have the same abundancy index. The abundancy index of a number n is defined as sigma(n) / n, where sigma(n) is the sum of all divisors of n (including n itself). Two numbers are friendly if sigma(a) / a == sigma(b) / b. To avoid floating-point issues, compare by cross-multiplying: sigma(a) * b == sigma(b) * a.
- •1 <= a, b <= 10^5
Examples
a = 6, b = 28
True
sigma(6) = 1+2+3+6 = 12. sigma(28) = 1+2+4+7+14+28 = 56. Cross check: 12 * 28 = 336, 56 * 6 = 336. They are equal, so they are a friendly pair.
a = 30, b = 140
True
sigma(30) = 72, sigma(140) = 336. Cross check: 72 * 140 = 10080, 336 * 30 = 10080. Equal, so friendly pair.
a = 5, b = 10
False
sigma(5) = 6, sigma(10) = 18. Cross check: 6 * 10 = 60, 18 * 5 = 90. Not equal, so not a friendly pair.
Need a Hint?
Edge Cases to Watch
- Empty list or null input variables
- Single item lists/arrays
- Extremely large input bounds causing integer or stack overflow
Ready to Solve?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.