/* Tre implementazioni dello stesso algoritmo che stabilisce se un dato numero e`, o meno, primo (ossia se e` un intero positivo che ha esattamente due divisori) */ class Primo{ public static void main( String[ ] aaa ){ int n = Integer.parseInt( aaa[ 0 ] ); // numero da testare boolean r; // ci dira` il risultato: se n sia o no un numero primo // if ( n < 0 ) System.exit( 0 ); // stop! (servirebbe forse questa?) int nd = 1, // numero divisori individuati (sappiamo, in effetti, che 1 divide n) d = 2; // prossimo candidato divisore while ( d <= n ) { if ( n % d == 0 ) nd++; d++; } r = nd == 2 ; // n e` primo se e solo se il conto dei divisori si ferma a 2 if ( r ) System.out.print( n + " e` " ); else System.out.print( n + " non e` " ); System.out.println( "primo" ); } } class Primo2{ public static void main( String[ ] aaa ){ int n = Integer.parseInt( aaa[ 0 ] ); // numero da testare boolean r; // ci dira` il risultato: se n sia o no un numero primo int nd = 1; // numero divisori individuati (sappiamo, in effetti, che 1 divide n) for( int d = 2 ; d <= n ; d++ ) if ( n % d == 0 ) nd++; r = nd == 2 ; // n e` primo se e solo se il conto dei divisori si ferma a 2 if ( r ) System.out.print( n + " e` " ); else System.out.print( n + " non e` " ); System.out.println( "primo" ); } } class Primo3{ public static void main( String[ ] aaa ){ int n = Integer.parseInt( aaa[ 0 ] ); // numero da testare System.out.println( n + (( primo( n ) ) ? "" : " non") + " e` primo" ); } public static boolean primo( int n ){ // il parametro potrebbe anche avere altro nome int nd = 1; // numero divisori individuati (sappiamo, in effetti, che 1 divide n) for( int d = 2 ; d <= n ; d++ ) if ( n % d == 0 ) nd++; return nd == 2 ; // n e` primo se e solo se il conto dei divisori si ferma a 2 } }