Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get exponents without using the math.pow for java

This is my program

// ************************************************************
    // PowersOf2.java
    //
    // Print out as many powers of 2 as the user requests
    //
    // ************************************************************

    import java.util.Scanner;

    public class PowersOf2 {

    public static void main(String[] args)

    {
        int numPowersOf2; //How many powers of 2 to compute
        int nextPowerOf2 = 1; //Current power of 2
        int exponent= 1;
        double x;

         //Exponent for current power of 2 -- this
        //also serves as a counter for the loop Scanner

        Scanner scan = new Scanner(System.in);
        System.out.println("How many powers of 2 would you like printed?");
        numPowersOf2 = scan.nextInt();
        System.out.println ("There will be " + numPowersOf2 + " powers of 2 printed");
        //initialize exponent -- the first thing printed is 2 to the what?

    while( exponent <= numPowersOf2)
        {
        double x1 = Math.pow(2, exponent);
        System.out.println("2^" + exponent + " = " + x1);
                exponent++;
        }   
//print out current power of 2
//find next power of 2 -- how do you get this from the last one?
//increment exponent

    }
}

The thing is that I am not allowed to use the math.pow method, I need to find another way to get the correct answer in the while loop.

like image 944
user3552056 Avatar asked Apr 19 '14 16:04

user3552056


People also ask

How do you find the power without using pow in Java?

Calculating the Power of a Number in Java Without Using Math pow() Method. In Java, we can calculate the power of any number by : Calculating the power of a number through while loop or for loop. Calculating the power of a number by the divide and conquer method.

Does Java have exponent?

You can do exponents in Java. While there is no simple Java exponential operator, you can easily calculate an exponent using a few different methods. However, using power in Java (Math. pow) is the most flexible and straightforward approach.


2 Answers

Powers of 2 can simply be computed by Bit Shift Operators

int exponent = ...
int powerOf2 = 1 << exponent;

Even for the more general form, you should not compute an exponent by "multiplying n times". Instead, you could do Exponentiation by squaring

like image 92
Marco13 Avatar answered Sep 29 '22 10:09

Marco13


Here is a post that allows both negative/positive power calculations.

https://stackoverflow.com/a/23003962/3538289

Function to handle +/- exponents with O(log(n)) complexity.

double power(double x, int n){
 if(n==0)
  return 1;

  if(n<0){
      x = 1.0/x;
      n = -n;
  }
 double ret = power(x,n/2);
 ret = ret * ret;
 if(n%2!=0)
   ret = ret * x;
 return ret;
}
like image 29
cevaris Avatar answered Sep 29 '22 08:09

cevaris