# Write an iterative O(Log y) function for pow(x, y)

Given an integer x and a positive number y, write a function that computes xy under following conditions.
a) Time complexity of the function should be O(Log y)
b) Extra Space is O(1)

Examples:

```Input: x = 3, y = 5
Output: 243

Input: x = 2, y = 5
Output: 32```

## We strongly recommend that you click here and practice it, before moving on to the solution.

We have discussed recursive O(Log y) solution for power. The recursive solutions are generally not preferred as they require space on call stack and they involve function call overhead.

Following is implementation to compute xy.

## C

 `// Iterative C program to implement pow(x, n) ` `#include ` ` `  `/* Iterative Function to calculate (x^y) in O(logy) */` `int` `power(``int` `x, unsigned ``int` `y) ` `{ ` `    ``int` `res = 1; ``// Initialize result ` ` `  `    ``while` `(y > 0) { ` `        ``// If y is odd, multiply x with result ` `        ``if` `(y & 1) ` `            ``res = res * x; ` ` `  `        ``// n must be even now ` `        ``y = y >> 1; ``// y = y/2 ` `        ``x = x * x; ``// Change x to x^2 ` `    ``} ` `    ``return` `res; ` `} ` ` `  `// Driver program to test above functions ` `int` `main() ` `{ ` `    ``int` `x = 3; ` `    ``unsigned ``int` `y = 5; ` ` `  `    ``printf``(``"Power is %d"``, power(x, y)); ` ` `  `    ``return` `0; ` `}`

## Java

 `// Iterative Java program ` `// to implement pow(x, n) ` `import` `java.io.*; ` ` `  `class` `GFG  ` `{ ` `     `  `/* Iterative Function to  ` `calculate (x^y) in O(logy) */` `static` `int` `power(``int` `x, ``int` `y) ` `{ ` `    ``// Initialize result ` `    ``int` `res = ``1``;  ` ` `  `    ``while` `(y > ``0``)  ` `    ``{ ` `        ``// If y is odd,  ` `        ``// multiply ` `        ``// x with result ` `        ``if` `((y & ``1``) == ``1``) ` `            ``res = res * x; ` ` `  `        ``// n must be even now ` `        ``y = y >> ``1``; ``// y = y/2 ` `        ``x = x * x; ``// Change x to x^2 ` `    ``} ` `    ``return` `res; ` `} ` ` `  `// Driver Code ` `public` `static` `void` `main (String[] args)  ` `{ ` `    ``int` `x = ``3``; ` `    ``int` `y = ``5``; ` ` `  `    ``System.out.println(``"Power is "` `+  ` `                        ``power(x, y)); ` `} ` `} ` ` `  `// This code is contributed ` `// by aj_36 `

## Python3

 `# Iterative Python3 program ` `# to implement pow(x, n) ` ` `  `# Iterative Function to ` `# calculate (x^y) in O(logy) ` `def` `power(x, y): ` ` `  `    ``# Initialize result ` `    ``res ``=` `1` `     `  `    ``while` `(y > ``0``): ` `         `  `        ``# If y is odd, multiply ` `        ``# x with result ` `        ``if` `((y & ``1``) ``=``=` `1``) : ` `            ``res ``=` `res ``*` `x ` ` `  `        ``# n must be even  ` `        ``# now y = y/2 ` `        ``y ``=` `y >> ``1` `         `  `        ``# Change x to x^2 ` `        ``x ``=` `x ``*` `x ` `     `  `    ``return` `res ` ` `  ` `  `# Driver Code ` `x ``=` `3` `y ``=` `5` ` `  `print``(``"Power is "``, ` `       ``power(x, y)) ` ` `  `# This code is contributed ` `# by ihritik `

## C#

 `// Iterative C# program ` `// to implement pow(x, n) ` `using` `System; ` ` `  `class` `GFG ` `{ ` `     `  `/* Iterative Function to  ` `calculate (x^y) in O(logy) */` `static` `int` `power(``int` `x, ``int` `y) ` `{ ` `    ``int` `res = 1; ``// Initialize result ` ` `  `    ``while` `(y > 0)  ` `    ``{ ` `        ``// If y is odd, multiply ` `        ``// x with result ` `        ``if` `((y & 1) == 1) ` `            ``res = res * x; ` ` `  `        ``// n must be even now ` `        ``y = y >> 1; ``// y = y/2 ` `        ``x = x * x; ``// Change x to x^2 ` `    ``} ` `    ``return` `res; ` `} ` ` `  `// Driver Code ` `static` `public` `void` `Main () ` `{ ` `int` `x = 3; ` `int` `y = 5; ` ` `  `Console.WriteLine(``"Power is "``+  ` `                   ``power(x, y)); ` `} ` `} ` ` `  `// This code is contributed ` `// by aj_36 `

## PHP

 ` ` ` `  `// Iterative Function to  ` `// calculate (x^y) in O(logy) ` ` `  `function` `power(``\$x``, ``\$y``) ` `{ ` `     `  `    ``// Initialize result ` `    ``\$res` `= 1;      ` ` `  `    ``while` `(``\$y` `> 0) ` `    ``{ ` `         `  `        ``// If y is odd, multiply ` `        ``// x with result ` `        ``if` `(``\$y` `& 1) ` `            ``\$res` `= ``\$res` `* ``\$x``; ` ` `  `        ``// n must be even now ` `         `  `        ``// y = y/2 ` `        ``\$y` `= ``\$y` `>> 1;  ` `         `  `        ``// Change x to x^2 ` `        ``\$x` `= ``\$x` `* ``\$x``;  ` `    ``} ` `    ``return` `\$res``; ` `} ` ` `  `    ``// Driver Code ` `    ``\$x` `= 3; ` `    ``\$y` `= 5; ` ` `  `    ``echo` `"Power is "``, power(``\$x``, ``\$y``); ` ` `  `// This code is contributed by ajit ` `?> `

Output:

`Power is 243`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Improved By : jit_t, ihritik

Article Tags :
Practice Tags :

18

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.