SHARE
TWEET

CH3 Emirps

a guest Jun 20th, 2011 888 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.io.IOException;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6.  
  7. /*
  8.  * Tuenti Contest
  9.  * Challenge 3 - Emirps
  10.  * Author: Pedro Antonio Pardal Jimena
  11.  * Email: pardal@alu.uma.es
  12.  */
  13.  
  14. public class Emirps
  15. {
  16.         private static boolean esPrimo( long n )
  17.         {
  18.                 if ( n == 1 )
  19.                         return false;
  20.                 else if ( n < 4 )
  21.                         return true;
  22.                      
  23.                 long m = (long) Math.sqrt( n );
  24.                
  25.                 for ( long i = 2; i <= m; i++ )
  26.                 {
  27.                         if ( n % i == 0 )
  28.                                 return false;
  29.                 }
  30.                
  31.                 return true;
  32.         }
  33.        
  34.         private static List<Long> primosHasta( long n )
  35.         {
  36.                 List<Long> primos = new LinkedList<Long>();
  37.                
  38.                 for ( long i = 1; i <= n; i++ )
  39.                 {
  40.                         if ( esPrimo( i ) )
  41.                                 primos.add( i );
  42.                 }
  43.                
  44.                 return primos;
  45.         }
  46.        
  47.         private static long reverse( long n )
  48.         {
  49.                 String strn = String.valueOf( n );
  50.                 StringBuffer b = new StringBuffer( strn );
  51.                
  52.                 return Long.parseLong( b.reverse().toString() );
  53.         }
  54.        
  55.         private static long sumaEmirps( List<Long> primos, long max )
  56.         {
  57.                 long result = 0;
  58.                 for ( Long l : primos )
  59.                 {
  60.                         if ( l > max )
  61.                                 break;
  62.                        
  63.                         long reversed = reverse( l );
  64.                        
  65.                         if ( l != reversed && primos.contains( reversed ) )
  66.                                 result += l;
  67.                 }
  68.                 return result;
  69.         }
  70.        
  71.         private static long procesaEmirps( String linea )
  72.         {
  73.                 long n = 0;
  74.                
  75.                 try
  76.                 {
  77.                         n = Long.parseLong( linea );
  78.                 }
  79.                 catch ( NumberFormatException e )
  80.                 {
  81.                 }
  82.                
  83.                 if ( n > 2 )
  84.                 {
  85.                         long tope = (long) Math.pow( 10, Math.ceil( Math.log10( n ) ) );
  86.                         List<Long> primos = primosHasta( tope );
  87.                        
  88.                         return sumaEmirps( primos, n );        
  89.                 }
  90.                 else
  91.                 {
  92.                         return 0L;
  93.                 }
  94.         }
  95.        
  96.         public static void main( String[] args ) throws IOException
  97.         {
  98.                 BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
  99.                
  100.                 while ( reader.ready() )
  101.                 {
  102.                         String linea = reader.readLine();
  103.                         long result = procesaEmirps( linea );
  104.                        
  105.                         System.out.println( result );
  106.                 }
  107.         }
  108. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top