/******************************************** Premiere version en C ********************************************/ #include int expo(int g,int x) { int aux=g, output=1; while(x!=0) { if(x%2==1) output=output*aux; aux=aux*aux; x=x/2; } return output; } void main() { int x,g; printf("x=");scanf("%d",&x); printf("g=");scanf("%d",&g); printf(" exp=%d\n",expo(g,x)); } /******************************************** Deuxieme version en C ********************************************/ #include int exponential_fast( int g, int x) { int aux = g, output = 1; while (x!=0) { if (x & 1) output = output *aux; x=x>>1; aux = aux * aux; } return output; } int main() { int g, x; printf("x="); scanf("%d",&x); printf("g="); scanf("%d",&g); printf("%d^(%d) = %d\n", g, x, exponential_fast(g, x)); } /******************************************** En Java ********************************************/ import java.util.Scanner; public class Main { public static void main(String[] args) { int x,g; Scanner sc = new Scanner(System.in); System.out.println("Saisissez x : "); x = sc.nextInt(); System.out.println("Saisissez g : "); g = sc.nextInt(); System.out.println(expo(g,x)); } public static int expo(int g, int x) { int aux=g, output=1; while(x!=0) { if(x%2==1) output=output*aux; aux=aux*aux; x=x/2; } return output; } } /******************************************** En Python ********************************************/ def exponentiation_rapide(g, x): aux=g output=1 while x > 0: if x % 2 == 1: output *= aux aux *= aux x //= 2 return output x = int(input('Enter x: ')) g = int(input('Enter g: ')) print(f'exp({x}, {g}) is {exponentiation_rapide(x, g)}')