Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.IOException;
- import java.util.LinkedList;
- import java.util.List;
- /*
- * Tuenti Contest
- * Challenge 3 - Emirps
- * Author: Pedro Antonio Pardal Jimena
- * Email: pardal@alu.uma.es
- */
- public class Emirps
- {
- private static boolean esPrimo( long n )
- {
- if ( n == 1 )
- return false;
- else if ( n < 4 )
- return true;
- long m = (long) Math.sqrt( n );
- for ( long i = 2; i <= m; i++ )
- {
- if ( n % i == 0 )
- return false;
- }
- return true;
- }
- private static List<Long> primosHasta( long n )
- {
- List<Long> primos = new LinkedList<Long>();
- for ( long i = 1; i <= n; i++ )
- {
- if ( esPrimo( i ) )
- primos.add( i );
- }
- return primos;
- }
- private static long reverse( long n )
- {
- String strn = String.valueOf( n );
- StringBuffer b = new StringBuffer( strn );
- return Long.parseLong( b.reverse().toString() );
- }
- private static long sumaEmirps( List<Long> primos, long max )
- {
- long result = 0;
- for ( Long l : primos )
- {
- if ( l > max )
- break;
- long reversed = reverse( l );
- if ( l != reversed && primos.contains( reversed ) )
- result += l;
- }
- return result;
- }
- private static long procesaEmirps( String linea )
- {
- long n = 0;
- try
- {
- n = Long.parseLong( linea );
- }
- catch ( NumberFormatException e )
- {
- }
- if ( n > 2 )
- {
- long tope = (long) Math.pow( 10, Math.ceil( Math.log10( n ) ) );
- List<Long> primos = primosHasta( tope );
- return sumaEmirps( primos, n );
- }
- else
- {
- return 0L;
- }
- }
- public static void main( String[] args ) throws IOException
- {
- BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
- while ( reader.ready() )
- {
- String linea = reader.readLine();
- long result = procesaEmirps( linea );
- System.out.println( result );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement