Java 有效地计算整数n的对(基、指数)表示

Java 有效地计算整数n的对(基、指数)表示,java,decomposition,Java,Decomposition,我在设计将整数n表示为整数对(base,exponent)的方法时遇到了问题,因此赋值时n==base^exponent。以下是该方法的合同@pre指定n必须是什么,@post定义输出必须是什么 /** * Writes a number as a power with maximal exponent. * * @param n the number to 'powerize' * @return power decomposition of {@code n} with maximal

我在设计将整数n表示为整数对(base,exponent)的方法时遇到了问题,因此赋值时
n==base^exponent
。以下是该方法的合同@pre指定n必须是什么,@post定义输出必须是什么

/**
* Writes a number as a power with maximal exponent.
*
* @param n  the number to 'powerize'
* @return  power decomposition of {@code n} with maximal exponent
* @throws IllegalArgumentException  if precondition violated
* @pre {@code 2 <= n}
* @post {@code n == power(\result) &&
*     (\forall int b, int e;
*      2 <= b && 1 <= e && n == b ^ e;
*      e <= \result.exponent)}
*/
public static Power powerize(int n){}
/**
*将数字写入具有最大指数的幂。
*
*@param n“powerize”的编号
*具有最大指数的{@code n}的@return幂分解
*@如果违反了前提条件,则抛出IllegalArgumentException

*@pre{@code 2在查阅了一些书籍后,我设计了以下解决方案:

输入整数n:
设p1…pm为m个唯一素数。
然后我们可以将n表示为:

    n=p1e1 x…x pmem.
      然后使用欧几里德算法计算e1…em的gcd。
      然后我们将n表示为:

        n=(p1e1/d x…x pmem/d)d.
          现在我们有:
            b=p1e1/d x…x pmem/d
              e=d

            return new Power(b,e)

            您可以定义一个具有两个属性的类
            base
            exponent
            ,并使用
            log(n)/log(2)>=e>=1
            中相同Classiter
            e
            的对象为它们实现getter和setter,然后计算
            b=exp(log(n)/e)