import java.util.Arrays; import java.util.BitSet; import java.util.Scanner; public class problem41 { public static void main(String[] args) { long tiempo= System.currentTimeMillis(); BitSet a = new BitSet(987654321); int i =2,j=0; for(i=2;(i*i)<=10000000;i=i+1) { if(!a.get(i)) { for(j=i+i;j<=10000000;j=j+i) { a.set(j); } } } for (int j2 =7654321; j2 >=1 ;j2--) { String x=Integer.toString(j2); char v[]= x.toCharArray(); Arrays.sort(v); if(!a.get(j2)) { if(ispandigital(x, v[v.length-1]-48)) {System.out.println(x); break; } } } System.out.println(System.currentTimeMillis()-tiempo); } public static boolean ispandigital(String x,int n) { boolean v[]= new boolean[n+1]; for (int i = 0; i < x.length(); i++) { v[x.charAt(i)-48]=true; } for (int i = 1; i < n+1; i++) { if(!v[i]) return false; } return true; } }
domingo, 19 de febrero de 2012
project euler # 41
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario