Un peu de maths : les puissances 2/2

Suite du post Un peu de maths : les puissances part.1
Petit rappel sur les règles de la puissance :

  • x^0 = 1.
  • x^y = x^(y/2)*x^(y/2) si y est pair.
  • x^y=x^(y-1)*x sinon.

Le petit programme qui suit demande deux valeurs (x et i) et calcule x puissance i :

import java.util.Scanner;

class puissance{
  static double puissance(double x,int n){
    double reponse;
    if (n==0) {
      reponse=1;
    }else{
      reponse=puissance(x,n/2);
      if(n%2==0){
        reponse=reponse*reponse;//pair
      }else{
        reponse=reponse*reponse*x;//impair
      }
    }
    return reponse;
  }
  public static void main(String[] args) {
    double x;
    Scanner lectureValeur = new Scanner(System.in);
    System.out.print("Valeur de x : ");
    x=lectureValeur.nextDouble();
    System.out.print("Puissance demandee : ");
    i=lectureValeur.nextInt();
    System.out.println(x+"^"+i+" = "+(int)(puissance(x,i)));
  }
}

Résultat sur le terminal :

nerdyprog@nerdycode ~ $ javac puissance.java
nerdyprog@nerdycode ~ $ java puissance
Valeur de x : 2
Valeur de i : 2
2.0^2 = 4

Le deuxieme petit programme permet d’écrire un calcul de la forme 2^2 et effectue le calcul :

import java.util.Scanner;

class puissance2{
  static double puissance(double x,int n){
    double reponse;
    if (n==0) {
      reponse=1;
    }else{
      reponse=puissance(x,n/2);
      if(n%2==0){
        reponse=reponse*reponse;//pair
      }else{
        reponse=reponse*reponse*x;//impair
      }
    }
    return reponse;
  }
  public static void main(String[] args) {
    double x=0;
    String calcul;
    int j=0, k=0, n=0;
    Scanner lectureEntre = new Scanner(System.in);
    System.out.print("Calcul à effectuer : ");
    calcul=lectureEntre.nextLine();
    for (int i=0; i<calcul.length(); i++) {
      if(calcul.charAt(i)!='^'){
        j=i+1;
        k=j+1;
      }else{
        break;
      }
    }
    x=Double.parseDouble(calcul.substring(0,j));
    n=Integer.parseInt(calcul.substring(k,calcul.length()));
    System.out.println(x+"^"+n+" = "+(int)(puissance(x,n)));

  }
}

Résultat sur le terminal :

nerdyprog@nerdycode ~ $ javac puissance.java
nerdyprog@nerdycode ~ $ java puissance
Calcul à effectuer : 2^2
2.0^2 = 4

 

Un peu de maths : Les puissances 1/2

Voyons comment creer un programme de calcul des puissances.
Petit rappel sur les règles de la puissance :

  • x^0 = 1.
  • x^y = x^(y/2)*x^(y/2) si y est pair.
  • x^y=x^(y-1)*x sinon.

Le petit programme qui suit calcule les puissances de 2 :

class puissance{
  static double puissance(double x,int n){
    double reponse;
    if (n==0) {
      reponse=1;
    }else{
      reponse=puissance(x,n/2);
      if(n%2==0){
        reponse=reponse*reponse;//pair
      }else{
        reponse=reponse*reponse*x;//impair
      }
    }
    return reponse;
  }
  public static void main(String[] args) {
    double x;
    for (int i=0; i&lt;=16;i++) {
      x=2;
      System.out.println("2^"+i+" = "+(int)(puissance(x,i)));
    }
  }
}

Résultat sur le terminal :

nerdyprog@nerdycode ~ $ javac puissance.java
nerdyprog@nerdycode ~ $ java puissance
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024
2^11 = 2048
2^12 = 4096
2^13 = 8192
2^14 = 16384
2^15 = 32768
2^16 = 65536

Nous pouvons améliorer ce programme de façon à demander à l’utilisateur de taper le chiffre ainsi que la puissance voulue. Nous verrons ça dans la prochaine partie ! :mrgreen: