package margusmartseppcode.From_40_to_49;
import java.util.Arrays;
public class Problem_49 {
// Call only if: (n>0&&(i%2==0||i%3==0||i%5==0||i%7==0))
static boolean isPrimeS(final int n) {
final int r = (int) Math.floor(Math.sqrt(n));
for (int f = 5; f <= r; f += 6)
if (n % f == 0 || n % (f + 2) == 0)
return false;
return true;
}
static boolean isPerm(char[] a, char[] b) {
if (a.length != b.length)
return false;
Arrays.sort(a);
Arrays.sort(b);
return Arrays.equals(a, b);
}
static boolean arePerms(int... n) {
if (n.length == 0)
return true;
for (int i = 1; i < n.length; i++)
if (!isPerm(("" + n[i - 1]).toCharArray(), ("" + n[i])
.toCharArray()))
return false;
return true;
}
static boolean arePrimes(int... n) {
for (int i : n)
if (!isPrimeS(i))
return false;
return true;
}
public static void main(String[] args) {
int a, b, c;
a = b = c = 0;
for (a = 1489;; a += 2) {
if (a % 3 == 0 || a % 5 == 0 || a % 7 == 0)
continue;
b = a + 3330;
c = a + 6660;
if (arePrimes(a, b, c))
if (arePerms(a, b, c))
break;
}
System.out.println("" + a + b + c);
}
}
Sunday, September 13, 2009
Euler Problem 49 solution
Time (s): ~0.002
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment