/* Quattro implementazioni Java di un procedimento che stabilisce se un dato numero e`, o meno, un quadrato perfetto. Due implementano un algoritmo; le altre due ne implementano uno diverso. */ class Quadrato{ public static void main( String[ ] aaa ){ int n = Integer.parseInt( aaa[ 0 ] ); // numero da testare boolean q = false; // ci dira` il risultato: se n sia o no un quadrato perfetto // if ( n < 0 ) System.exit( 0 ); // stop! (servirebbe forse questa?) int r = 0; while ( r <= n ) { if ( r * r == n ) q = true; r++; } if ( q ) System.out.print( n + " e` " ); else System.out.print( n + " non e` " ); System.out.println( "un quadrato perfetto" ); } } class Quadrato2{ public static void main( String[ ] aaa ){ int x = Integer.parseInt( aaa[ 0 ] ); // numero da testare System.out.println( x + (( quadr( x ) ) ? "" : " non") + " e` quadrato" ); } public static boolean quadr( int n ){ boolean q = false; // ci dira` il risultato: se n sia o no un quadrato perfetto for( int r = 0; r <= n; r++ ) if ( r * r == n ) q = true; return q; } } // Esercizi: // (1) Stabilite se un numero dato sia o no triangolare. // (2) Calcolate, dato un numero n, quale sia il numero triangolare 0+1+2+...+n. class Quadrato3{ public static void main( String[ ] aaa ){ int x = Integer.parseInt( aaa[ 0 ] ); // numero da testare System.out.println( x + (( quadr( x ) ) ? "" : " non") + " e` quadrato" ); } public static boolean quadr( int n ){ int q = 0, d = 1; while( q < n ){ q += d; d += 2; } return q == n; } } class Quadrato4{ public static void main( String[ ] aaa ){ int x = Integer.parseInt( aaa[ 0 ] ); // numero da testare System.out.println( x + (( quadr( x ) ) ? "" : " non") + " e` quadrato" ); } public static boolean quadr( int n ){ int q = 0; for( int d = 1; q < n; d += 2 ) q += d; return q == n; } }