假设我要计算 8 的平方根。有两种方法可以显示结果,如下所示:
\n\n
我认为获得第二个解决方案的最佳方法是:
\n\n
我想尝试在我的 Java 应用程序中显示 2\xe2\x88\x9a2 而不是 2,828427... 所以我想按照这些步骤开发一个类。让我们考虑 8 的平方根。
\n\n正如您在下面看到的,我开发了一个输出因子的代码。如果输入 8,该方法estraiRadice()将输出2 * 2 * 2,这是正确的。
private int b = 2;\n\npublic String estraiRadice(double x) {\n\n String resRad = "";\n int[] exponents = new int[100];\n\n //Scomposizione in fattori primi\n while (x > 1) {\n\n if ((x % b) == 0) {\n x /= b;\n resRad += String.valueOf(b) + " * ";\n } else {\n b++;\n }\n }\n\n return resRad;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n第二步给我带来了问题,因为我不知道如何创建数字的幂并将其从平方根导出。我的意思是: \xe2\x88\x9a2*2*2 怎么会变成 \xe2\x88\x9a4*2 然后变成 2\xe2\x88\x9a2 ?
\n\n我认为我可以将每个底数的指数存储在一个数组中,然后尝试以某种方式导出它。你有什么建议吗?
\n小智 1
您可以使用 HashMap 来存储素数幂对
HashMap<Integer,Integer> getRoots(int x)
{
HashMap<Integer,Integer> retval = new HashMap<Integer,Integer>();
int i=2;
while(i<=x)
{
int power = 0;
while( x%i == 0)
{
power++;
x /= i;
}
if(power>0)
{
retval.put(i,power);
}
if(x==1)
{
break;
}
i++;
}
return retval;
}
Run Code Online (Sandbox Code Playgroud)