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

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

#include<stdio.h>
/* 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 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

# drive 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

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

Python


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

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




Recommended Posts:



2.5 Average Difficulty : 2.5/5.0
Based on 31 vote(s)