java - 计算产品为完美正方形的数组中对数的最有效方法?

标签 java

我的解决方案是这样的:

获取所有可能的对(不是与问题要求的元素相同的对),然后检查第一个元素是否为完美正方形(如果为真) 检查其他元素是否为完美正方形。

检查完美平方只是求平方根并检查小数部分。

我在面试中被问到这个问题,但它需要做得更好。 谁能给我一个更好的方法。

int cnt = 0.0;
for (int i = 0; i < test; i++)  {
    for (int j = 0; j < test; j++)  {
        if (!(i == j))  {
            double prod = Math.sqrt(arr[i]);
            int prodi = (int) prod;
            double frac = prod - prodi;
            if (frac == 0.0) {
                //System.out.println("SAdfs");
                prod=Math.sqrt(arr[j]);
                prodi = (int)prod;
                frac = prod-prodi;
                if (frac == 0.0) {
                    cnt++;
                }
            }
        }       
    }
}

double denom=test*(test-1);
double result=cnt/denom;
String strDouble = String.format("%.6f", result);
System.out.println(result);

最佳答案

您需要找到两个输入的阶乘及其计数,例如

12 = 2 ^ 2, 3 ^ 1;
27 = 3 ^ 3;

然后您需要对两个输入的阶乘因子求和(例如我给出的是 2:2、3:4)。如果所有阶乘都有一个可以被 2 整除的因子(即因子 % 2 == 0)那么它就是一个完美的正方形

关于java - 计算产品为完美正方形的数组中对数的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35655795/

相关文章:

java - 如何增加 jBoss 服务器的堆大小

java - 按下 X 按钮时复选框状态更改

java - ArrayList 与 char[]。对于构建大字符串来说这是最有效的

java - 在 J2SE 环境中使用 Hibernate JPA 中的 OracleDataSource

java - 多个值键不添加,仅在 json 文件中替换

java - @Inject 的刻板印象可能吗?

java - 在 Intellij IDEA 中打开 Gradle 项目时出现问题

java - Metro & StreamBuffer 命名空间错误——我理解正确吗?

java - 是否需要 try catch block

java - 在字符串中查找短语。有没有更优雅的方法来做到这一点?