Calculating powers of integers

前端 未结 16 1978
情书的邮戳
情书的邮戳 2020-12-08 06:18

Is there any other way in Java to calculate a power of an integer?

I use Math.pow(a, b) now, but it returns a double, and that is usually a

相关标签:
16条回答
  • 2020-12-08 06:48

    Best the algorithm is based on the recursive power definition of a^b.

    long pow (long a, int b)
    {
        if ( b == 0)        return 1;
        if ( b == 1)        return a;
        if (isEven( b ))    return     pow ( a * a, b/2); //even a=(a^2)^b/2
        else                return a * pow ( a * a, b/2); //odd  a=a*(a^2)^b/2
    
    }
    

    Running time of the operation is O(logb). Reference:More information

    0 讨论(0)
  • 2020-12-08 06:48

    base is the number that you want to power up, n is the power, we return 1 if n is 0, and we return the base if the n is 1, if the conditions are not met, we use the formula base*(powerN(base,n-1)) eg: 2 raised to to using this formula is : 2(base)*2(powerN(base,n-1)).

    public int power(int base, int n){
       return n == 0 ? 1 : (n == 1 ? base : base*(power(base,n-1)));
    }
    
    0 讨论(0)
  • 2020-12-08 06:48

    Apache has ArithmeticUtils.pow(int k, int e).

    0 讨论(0)
  • 2020-12-08 06:50

    Unlike Python (where powers can be calculated by a**b) , JAVA has no such shortcut way of accomplishing the result of the power of two numbers. Java has function named pow in the Math class, which returns a Double value

    double pow(double base, double exponent)
    

    But you can also calculate powers of integer using the same function. In the following program I did the same and finally I am converting the result into an integer (typecasting). Follow the example:

    import java.util.*;
    import java.lang.*; // CONTAINS THE Math library
    public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int n= sc.nextInt(); // Accept integer n
            int m = sc.nextInt(); // Accept integer m
            int ans = (int) Math.pow(n,m); // Calculates n ^ m
            System.out.println(ans); // prints answers
        }
    }
    

    Alternatively, The java.math.BigInteger.pow(int exponent) returns a BigInteger whose value is (this^exponent). The exponent is an integer rather than a BigInteger. Example:

    import java.math.*;
    public class BigIntegerDemo {
    public static void main(String[] args) {
          BigInteger bi1, bi2; // create 2 BigInteger objects          
          int exponent = 2; // create and assign value to exponent
          // assign value to bi1
          bi1 = new BigInteger("6");
          // perform pow operation on bi1 using exponent
          bi2 = bi1.pow(exponent);
          String str = "Result is " + bi1 + "^" +exponent+ " = " +bi2;
          // print bi2 value
          System.out.println( str );
       }
    }
    
    0 讨论(0)
提交回复
热议问题