Pages

Tuesday, September 8, 2009

Euler Problem 12 solution

Time (s): ~0.002
package margusmartseppcode.From_10_to_19;

public class Problem_12 {
 /** Get number of prime exponents */
 static int getNoPE(int sum) {
  int dx = 1, exp = 1;

  for (int p : new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 }) {
   if (sum == 1)
    break;
   if (sum < p * p)
    return dx * 2;
   for (exp = 1; sum % p == 0; exp += 1)
    sum = sum / p;

   dx *= exp;
  }

  return dx;
 }

 public static void main(String[] args) {
  int size = 500, sum = 1;

  for (int i = 1; i < Integer.MAX_VALUE; i++, sum += i)
   if (getNoPE(sum) > size)
    break;

  System.out.println(sum);
 }
}

No comments:

Post a Comment