/* 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;
    }
}