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

Last Updated : 23 Jul, 2025

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 <bits/stdc++.h> 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<stdio.h> /* 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=answer = answer=a; increment=increment = increment=a; $i; $j; for($i = 1; i<i < i<b; $i++) { for($j = 1; j<j < j<a; $j++) { answer+=answer += answer+=increment; } increment=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<bits/stdc++.h> 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<stdio.h> /* 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,a, 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)

Method 3 (Using bit masking)

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

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 <stdio.h>

// 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

PHP

0) { // calculate last bit(right most) bit of n lastbit=last_bit = lastbit=n&1; // if last bit is 1 then multiply ans and a if($last_bit) { ans=ans = 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=a*$a; n=n = n=n >> 1; } return $ans; } // driver code echo(p_ow(5,3)); ?>

`

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.

Method 4 (Using Exponentiation by Squaring):

This method is based on the idea that the result of a^b can be obtained by dividing the problem into smaller sub-problems of size b/2 and solving them recursively.

Algorithm:

  1. If b==0, return 1.
  2. If b is even, return pow(a*a, b/2).
  3. If b is odd, return apow(aa, (b-1)/2). C++ `

#include using namespace std;

int Pow(int a, int b) { if (b == 0) { return 1; } if (b % 2 == 0) { return Pow(a * a, b / 2); } else { return a * Pow(a * a, (b - 1) / 2); } }

int main() { cout << Pow(5, 3); // Output: 125 return 0; } // This code is contributed by shivhack999

Java

public class Main { public static long pow(long a, long b) { if (b == 0) { return 1; } if (b % 2 == 0) { return pow(a * a, b / 2); } else { return a * pow(a * a, (b - 1) / 2); } }

public static void main(String[] args)
{
    System.out.println(pow(5, 3)); // Output: 125
}

} // This code is contributed by user_dtewbxkn77n

Python3

def pow(a, b): if b == 0: return 1 if b % 2 == 0: return pow(aa, b//2) else: return apow(a*a, (b-1)//2)

print(pow(5,3)) # Output: 125

C#

using System;

class Program { static int Pow(int a, int b) { if (b == 0) { return 1; } if (b % 2 == 0) { return Pow(a * a, b / 2); } else { return a * Pow(a * a, (b - 1) / 2); } }

static void Main(string[] args)
{
    Console.WriteLine(Pow(5, 3)); // Output: 125
}

}

JavaScript

function pow(a, b) { if (b == 0) { return 1; } if (b % 2 == 0) { return pow(a * a, b / 2); } else { return a * pow(a * a, (b - 1) / 2); } }

console.log(pow(5, 3)); // Output: 125

`

Time complexity of the above pow function is O(log b) because the function is dividing the problem into half in each recursive call.

The auxiliary space or space complexity of the function is also O(log b) because the maximum number of recursive calls will be equal to the log base 2 of the input value b.