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