Java 有效地计算整数n的对(基、指数)表示
我在设计将整数n表示为整数对(base,exponent)的方法时遇到了问题,因此赋值时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
。以下是该方法的合同@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
中相同Classitere
的对象为它们实现getter和setter,然后计算b=exp(log(n)/e)
。