d(n)定義爲n 的所有真因子(小於 n 且能整除 n 的整數)之和。
如果 d(a) = b 並且 d(b) = a, 且 a b, 那麼 a 和 b 就是一對相親數(amicable pair),並且 a 和 b 都叫做親和數(amicable
number)。
例如220的真因子是 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 和 110; 因此 d(220) = 284. 284的真因子是1, 2, 4, 71 和142; 所以d(284) = 220.
計算10000以下所有親和數之和。
public class Problem21
{
public static void main(String[] args)
{
howmany();
}
static void howmany()
{
int sum = 0;
//從2 ~ 10000
for (int i = 2; i <= 10000; i++)
{
// d(a) = b 並且 d(b) = a, 且 a ≠ b
if (he(he(i)) == i && he(i) != i)
{
sum += i;
}
}
System.out.println(sum);
}
static int he(int n)
{
if (n == 1)
{
return 0;
}
int sum = 1;//除了1,所有的數都有真因子 1;
for (int i = 2; i <= Math.sqrt(n); i++)
{
if ( n % i == 0)
{
sum = sum + i + n / i;
}
}
return sum;
}
}
answer : 31626