package margusmartseppcode.From_20_to_29; public class Problem_23 { public static boolean IsAbundant(int num) { int factorSum = 1; double temp = Math.sqrt(num); if (temp % 1 == 0) factorSum -= temp; for (int i = 2; i <= temp; i++) if (num % i == 0) factorSum += i + num / i; if (factorSum > num) return true; return false; } public static void main(String[] args) { final int size = 28123; int[] d = new int[8192]; int[] not = new int[size]; int c = 0, c2 = 0, sum = 0; for (int i = 10; i <= size; i++) if (IsAbundant(i)) d[c++] = i; for (int i = 0; i < c; i++) for (int j = i; j < c; j++) if ((c2 = d[i] + d[j]) < size) not[c2] = 1; for (int i = 1; i < size; i++) if (not[i] != 1) sum += i; System.out.println(sum); } }
Tuesday, September 8, 2009
Euler Problem 23 solution
Time (s): ~0.231
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment