Unité IN3S02 - TD2
Corrigé
2.1- Factorielle (*) 2.2- Pgcd (*) 2.3- Racine cubique (*) 2.4- Fibonacci (*) 2.5- Nombre parfait (*)
/**
 * @param    0 <= i <= j
 * @return   first perfect number in [i, j], or 0 otherwise

 */
public static int perfectNumber(int i, int j) {
    boolean isPerfect = false ;
    int k ;
    for ( k =
Math.max(i,2) ; k <= j && ! isPerfect ; k++ ) {
       int sumDividors = 1 ;

       /* Solution 1 */
       for ( int d = 2; d <= k/2; d++ ) {
          if ( k % d == 0 ) sumDividors += d ;

       /* Solution 2 */
       // int d = 2 ;
       // for ( ; d < Math.sqrt(k); d++ ) {
       //   if ( k % d == 0 ) sumDividors += d + (k / d);
       // if ( d*d == k) sumDividors +=d ;

       }
       isPerfect = ( k == sumDividors ) ;
    }
    if (isPerfect) return k-1 ;
    return 0 ;

}


/**
 * @param   0 <= i <= j
 */
public static void printPerfectNumbers(int i, int j) {
    while (i <= j) {
       i = perfectNumber(i, j);

       if ( i == 0 ) i = j ;
       else System.out.println(i);
       i++ ;

    }
}
2.6- Sinus (*) 2.7- Conversion octal vers décimal (**)