package margusmartseppcode.From_20_to_29;
public class Problem_21 {
static int size = 10000;
static int memcard[] = new int[size * 3];
static int getSoPD(int nr) {
if (memcard[nr] != 0)
return memcard[nr];
int sum = 1;
for (int i = 2; i * i <= nr; i++)
if (nr % i == 0)
sum = sum + i + nr / i;
return memcard[nr] = sum;
}
public static void main(String[] args) {
int sum = 0, b;
for (int i = 2; i < size; i++)
if (((b = getSoPD(i)) > i) && (getSoPD(b) == i))
sum += b + i;
System.out.println(sum);
}
}
Tuesday, September 8, 2009
Euler Problem 21 solution
Time (s): ~0.022
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment