int is_amicable(int n, Primes &p) { int fac_sum1 = p.sum_proper_divisors(n); if ( fac_sum1 <= n ) { return 0; } int fac_sum2 = p.sum_proper_divisors(fac_sum1); if (fac_sum2 == n) { return n + fac_sum1; } return 0; }