# Write you own Power without using multiplication(*) and division(/) operators

• Difficulty Level : Easy
• Last Updated : 11 Jun, 2022

Method 1 (Using Nested Loops)
We can calculate power by using repeated addition.
For example to calculate 5^6.
1) First 5 times add 5, we get 25. (5^2)
2) Then 5 times add 25, we get 125. (5^3)
3) Then 5 times add 125, we get 625 (5^4)
4) Then 5 times add 625, we get 3125 (5^5)
5) Then 5 times add 3125, we get 15625 (5^6)

## C++

 `// C++ code for power function ` `#include ` `using` `namespace` `std;`   `/* Works only if a >= 0 and b >= 0 */` `int` `pow``(``int` `a, ``int` `b) ` `{ ` `    ``if` `(b == 0) ` `        ``return` `1; ` `    ``int` `answer = a; ` `    ``int` `increment = a; ` `    ``int` `i, j; ` `    ``for``(i = 1; i < b; i++) ` `    ``{ ` `        ``for``(j = 1; j < a; j++) ` `        ``{ ` `            ``answer += increment; ` `        ``} ` `        ``increment = answer; ` `    ``} ` `    ``return` `answer; ` `} `   `// Driver Code` `int` `main() ` `{ ` `    ``cout << ``pow``(5, 3); ` `    ``return` `0; ` `} `   `// This code is contributed ` `// by rathbhupendra`

## C

 `#include` `/* Works only if a >= 0 and b >= 0  */` `int` `pow``(``int` `a, ``int` `b)` `{` `  ``//base case : anything raised to the power 0 is 1` `  ``if` `(b == 0)` `    ``return` `1;` `  ``int` `answer = a;` `  ``int` `increment = a;` `  ``int` `i, j;` `  ``for``(i = 1; i < b; i++)` `  ``{` `     ``for``(j = 1; j < a; j++)` `     ``{` `        ``answer += increment;` `     ``}` `     ``increment = answer;` `  ``}` `  ``return` `answer;` `}`   `/* driver program to test above function */` `int` `main()` `{` `  ``printf``(``"\n %d"``, ``pow``(5, 3));` `  ``getchar``();` `  ``return` `0;` `}`

## Java

 `import` `java.io.*;`   `class` `GFG {` `    `  `    ``/* Works only if a >= 0 and b >= 0 */` `    ``static` `int` `pow(``int` `a, ``int` `b)` `    ``{` `        ``if` `(b == ``0``)` `            ``return` `1``;` `            `  `        ``int` `answer = a;` `        ``int` `increment = a;` `        ``int` `i, j;` `        `  `        ``for` `(i = ``1``; i < b; i++) {` `            ``for` `(j = ``1``; j < a; j++) {` `                ``answer += increment;` `            ``}` `            ``increment = answer;` `        ``}` `        `  `        ``return` `answer;` `    ``}`   `    ``// driver program to test above function` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``System.out.println(pow(``5``, ``3``));` `    ``}` `}`   `// This code is contributed by vt_m.`

## Python

 `# Python 3 code for power` `# function `   `# Works only if a >= 0 and b >= 0 ` `def` `pow``(a,b):` `    ``if``(b``=``=``0``):` `        ``return` `1` `        `  `    ``answer``=``a` `    ``increment``=``a` `    `  `    ``for` `i ``in` `range``(``1``,b):` `        ``for` `j ``in` `range` `(``1``,a):` `            ``answer``+``=``increment` `        ``increment``=``answer` `    ``return` `answer`   `# driver code` `print``(``pow``(``5``,``3``))`   `# this code is contributed ` `# by Sam007`

## C#

 `using` `System;`   `class` `GFG` `{` `    ``/* Works only if a >= 0 and b >= 0 */` `    ``static` `int` `pow(``int` `a, ``int` `b)` `    ``{` `        ``if` `(b == 0)` `            ``return` `1;` `            `  `        ``int` `answer = a;` `        ``int` `increment = a;` `        ``int` `i, j;` `        `  `        ``for` `(i = 1; i < b; i++) {` `            ``for` `(j = 1; j < a; j++) {` `                ``answer += increment;` `            ``}` `            ``increment = answer;` `        ``}` `        `  `        ``return` `answer;` `    ``}`   `    ``// driver program to test ` `    ``// above function` `    ``public` `static` `void` `Main()` `    ``{` `        ``Console.Write(pow(5, 3));` `    ``}` `}`   `// This code is contributed by Sam007`

## PHP

 `= 0 ` `// and b >= 0 ` `function` `poww(``\$a``, ``\$b``)` `{` `    ``if` `(``\$b` `== 0)` `        ``return` `1;` `    ``\$answer` `= ``\$a``;` `    ``\$increment` `= ``\$a``;` `    ``\$i``;` `    ``\$j``;` `    ``for``(``\$i` `= 1; ``\$i` `< ``\$b``; ``\$i``++)` `    ``{` `        ``for``(``\$j` `= 1; ``\$j` `< ``\$a``; ``\$j``++)` `        ``{` `            ``\$answer` `+= ``\$increment``;` `        ``}` `        ``\$increment` `= ``\$answer``;` `    ``}` `    ``return` `\$answer``;` `}`   `    ``// Driver Code` `    ``echo``( poww(5, 3));` ` `  `// This code is contributed by nitin mittal.` `?>`

## Javascript

 ``

Output :

`125`

Time Complexity: O(a * b)

Auxiliary Space: O(1)

Method 2 (Using Recursion)
Recursively add a to get the multiplication of two numbers. And recursively multiply to get a raise to the power b.

## C++

 `#include` `using` `namespace` `std;`   `/* A recursive function to get x*y */` `int` `multiply(``int` `x, ``int` `y)` `{` `    ``if``(y)` `        ``return` `(x + multiply(x, y - 1));` `    ``else` `        ``return` `0;` `}`   `/* A recursive function to get a^b` `Works only if a >= 0 and b >= 0 */` `int` `pow``(``int` `a, ``int` `b)` `{` `    ``if``(b)` `        ``return` `multiply(a, ``pow``(a, b - 1));` `    ``else` `        ``return` `1;` `} `   `// Driver Code` `int` `main()` `{` `    ``cout << ``pow``(5, 3);` `    ``getchar``();` `    ``return` `0;` `}`   `// This code is contributed ` `// by Akanksha Rai`

## C

 `#include` `/* A recursive function to get a^b` `  ``Works only if a >= 0 and b >= 0  */` `int` `pow``(``int` `a, ``int` `b)` `{` `   ``if``(b)` `     ``return` `multiply(a, ``pow``(a, b-1));` `   ``else` `    ``return` `1;` `}    `   `/* A recursive function to get x*y */` `int` `multiply(``int` `x, ``int` `y)` `{` `   ``if``(y)` `     ``return` `(x + multiply(x, y-1));` `   ``else` `     ``return` `0;` `}`   `/* driver program to test above functions */` `int` `main()` `{` `  ``printf``(``"\n %d"``, ``pow``(5, 3));` `  ``getchar``();` `  ``return` `0;` `}`

## Java

 `import` `java.io.*;`   `class` `GFG {` `    `  `    ``/* A recursive function to get a^b` `    ``Works only if a >= 0 and b >= 0 */` `    ``static` `int` `pow(``int` `a, ``int` `b)` `    ``{` `        `  `        ``if` `(b > ``0``)` `            ``return` `multiply(a, pow(a, b - ``1``));` `        ``else` `            ``return` `1``;` `    ``}`   `    ``/* A recursive function to get x*y */` `    ``static` `int` `multiply(``int` `x, ``int` `y)` `    ``{` `        `  `        ``if` `(y > ``0``)` `            ``return` `(x + multiply(x, y - ``1``));` `        ``else` `            ``return` `0``;` `    ``}`   `    ``/* driver program to test above functions */` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``System.out.println(pow(``5``, ``3``));` `    ``}` `}`   `// This code is contributed by vt_m.`

## Python3

 `def` `pow``(a,b):` `    `  `    ``if``(b):` `        ``return` `multiply(a, ``pow``(a, b``-``1``));` `    ``else``:` `        ``return` `1``;` `     `  `# A recursive function to get x*y *` `def` `multiply(x, y):` `    `  `    ``if` `(y):` `        ``return` `(x ``+` `multiply(x, y``-``1``));` `    ``else``:` `        ``return` `0``;`   `# driver program to test above functions *` `print``(``pow``(``5``, ``3``));`     `# This code is contributed` `# by Sam007`

## C#

 `using` `System;`   `class` `GFG` `{` `    ``/* A recursive function to get a^b` `    ``Works only if a >= 0 and b >= 0 */` `    ``static` `int` `pow(``int` `a, ``int` `b)` `    ``{` `        `  `        ``if` `(b > 0)` `            ``return` `multiply(a, pow(a, b - 1));` `        ``else` `            ``return` `1;` `    ``}`   `    ``/* A recursive function to get x*y */` `    ``static` `int` `multiply(``int` `x, ``int` `y)` `    ``{` `        `  `        ``if` `(y > 0)` `            ``return` `(x + multiply(x, y - 1));` `        ``else` `            ``return` `0;` `    ``}`   `    ``/* driver program to test above functions */` `    ``public` `static` `void` `Main()` `    ``{` `        ``Console.Write(pow(5, 3));` `    ``}` `}`   `// This code is contributed by Sam007`

## PHP

 `= 0 and b >= 0 */` `function` `p_ow( ``\$a``, ``\$b``)` `{` `    ``if``(``\$b``)` `        ``return` `multiply(``\$a``, ` `          ``p_ow(``\$a``, ``\$b` `- 1));` `    ``else` `        ``return` `1;` `} `   `/* A recursive function ` `   ``to get x*y */` `function` `multiply(``\$x``, ``\$y``)` `{` `    ``if``(``\$y``)` `        ``return` `(``\$x` `+ multiply(``\$x``, ``\$y` `- 1));` `    ``else` `        ``return` `0;` `}`   `// Driver Code` `echo` `pow(5, 3);`   `// This code is contributed by anuj_67.` `?>`

## Javascript

 ``

Output :

`125`

Time Complexity: O(b)

Auxiliary Space: O(b)

approach

we can a^n (let’s say 3^5) as 3^4 * 3^0 * 3^1 = 3^, so we can represent 5 as its binary i.e. 101

t

## C++

 `#include ` `using` `namespace` `std;`   `//function calculating power` `long` `long` `pow``(``int` `a, ``int` `n){` `    ``int` `ans=1;` `      ``while``(n>0){` `          ``// calculate last bit(right most) bit of n` `        ``int` `last_bit = n&1;` `          `  `          ``//if last bit is 1 then multiply ans and a` `          ``if``(last_bit){` `            ``ans = ans*a;` `        ``}` `      `  `      ``//make a equal to square of a as on every succeeding bit it got squared like a^0, a^1, a^2, a^4, a^8` `      ``a = a*a;` `      ``n = n >> 1;` `    ``}` `      ``return` `ans;` `}`   `//driver code` `int` `main() {`   `    ``cout<<``pow``(3,5);` `    ``return` `0;` `}`

## C

 `#include `   `// function calculating power` `long` `long` `pow_(``int` `a, ``int` `n){` `  ``int` `ans = 1;` `  ``while``(n > 0)` `  ``{` `    `  `    ``// calculate last bit(right most) bit of n` `    ``int` `last_bit = n&1;`   `    ``// if last bit is 1 then multiply ans and a` `    ``if``(last_bit){` `      ``ans = ans*a;` `    ``}`   `    ``//make a equal to square of a as on every succeeding bit it got squared like a^0, a^1, a^2, a^4, a^8` `    ``a = a*a;` `    ``n = n >> 1;` `  ``}` `  ``return` `ans;` `}`   `// driver code` `int` `main() ` `{`   `  ``// pow is an inbuilt function so I have used pow_ as a function name` `  ``printf``(``"%lld"``,pow_(3,5));` `  ``return` `0;` `}`   `// This code is contributed by akashish_.`

## Java

 `// Java program for the above approach` `import` `java.io.*;` `import` `java.util.*;`   `class` `GFG` `{`   `// function calculating power` `static` `int` `pow(``int` `a, ``int` `n){` `    ``int` `ans = ``1``;` `      ``while``(n > ``0``)` `      ``{` `        `  `          ``// calculate last bit(right most) bit of n` `        ``int` `last_bit = n&``1``;` `           `  `          ``//if last bit is 1 then multiply ans and a` `          ``if``(last_bit != ``0``){` `            ``ans = ans*a;` `        ``}` `       `  `      ``//make a equal to square of a as on every succeeding bit it got squared like a^0, a^1, a^2, a^4, a^8` `      ``a = a*a;` `      ``n = n >> ``1``;` `    ``}` `      ``return` `ans;` `}`   `// Driver Code` `public` `static` `void` `main(String[] args)` `{` `    ``System.out.print(pow(``3``,``5``));` `}` `}`   `// This code is contributed by code_hunt.`

## Python3

 `# function calculating power` `def` `pow``(a, n):` `    ``ans ``=` `1` `    ``while``(n > ``0``):` `      `  `        ``#  calculate last bit(right most) bit of n` `        ``last_bit ``=` `n&``1` `          `  `        ``# if last bit is 1 then multiply ans and a` `        ``if``(last_bit):` `            ``ans ``=` `ans``*``a` `      `  `        ``# make a equal to square of a as on ` `        ``# every succeeding bit it got squared ` `        ``# like a^0, a^1, a^2, a^4, a^8` `        ``a ``=` `a``*``a` `        ``n ``=` `n >> ``1` `    ``return` `ans`   `# driver code` `print``(``pow``(``3``, ``5``))`   `# This code is contributed by shinjanpatra`

## C#

 `// C# code to implement the approach` `using` `System;` `using` `System.Numerics;` `using` `System.Collections.Generic;`   `public` `class` `GFG {`   `// function calculating power` `static` `int` `pow(``int` `a, ``int` `n){` `    ``int` `ans = 1;` `      ``while``(n > 0)` `      ``{` `        `  `          ``// calculate last bit(right most) bit of n` `        ``int` `last_bit = n&1;` `           `  `          ``//if last bit is 1 then multiply ans and a` `          ``if``(last_bit != 0){` `            ``ans = ans*a;` `        ``}` `       `  `      ``//make a equal to square of a as on every succeeding bit it got squared like a^0, a^1, a^2, a^4, a^8` `      ``a = a*a;` `      ``n = n >> 1;` `    ``}` `      ``return` `ans;` `}`   `// Driver Code` `public` `static` `void` `Main(``string``[] args)` `{` `    ``Console.Write(pow(3,5));` `}` `}`   `// This code is contributed by sanjoy_62.`

## Javascript

 ``

Time Complexity: O(log n)

Auxiliary Space: O(1)

Please write comments if you find any bug in the above code/algorithm, or find other ways to solve the same problem.

My Personal Notes arrow_drop_up
Recommended Articles
Page :