gpt4 book ai didi

java - 找出假数字的所有因素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:27 25 4
gpt4 key购买 nike

我正在尝试找到最快的全因子算法。我使用将所有因素放入一个数组列表中进行加法,然后将总和与原始数字进行比较,以确定它们是否相同。

例子。 6 有 [1,2,3} 的因数,如果你加上 1+2+3 = 6。

除了我现在的程序之外,是否有更快的分解、添加和比较方法?

public class Phony_Number {

private int number;

public Phony_Number(int num) {
number = num;
print();
}

public Phony_Number() {
number = 0;
}

private ArrayList<Integer> factoring(int num) {
ArrayList<Integer> factors = new ArrayList<Integer>();
if (num % 2 == 0) {
for (int ff = 3; ff < num; ff++) {
if (num % ff == 0) {
factors.add(ff);
}
}
}
return factors;
}

private int sum(ArrayList<Integer> array) {
int sum = 0;
for (int i = 0; i < array.size(); i++) {
sum = +sum + array.get(i);
}
return sum+3;
}

private boolean compare(int num, int sum) {
if (num == sum)
return true;
return false;
}

public void print() {
for (int i = number; i > 5; i--) {
if (compare(i, sum(factoring(i)))) {
System.out.println("Number " + i + " is phony number");
}
}
}

My current result for 20,000 numbers is this

Number 8128 is phony number

Number 496 is phony number

Number 28 is phony number

Number 6 is phony number

Nano RunTime 359624716

最佳答案

一些小事情跳出来了:你的比较方法毫无意义,删除它,它会稍微简化你的代码。您的 sum 方法可以只使用 +=。为什么循环遍历每个数字然后删除一半,只需在循环中使用 -=2。

不过,您的主要节省可能来自于您的因式分解 方法 - 您知道超过 num/2 的数字不能作为因数,因此您可以在到达那里后立即停止.

(事实上,在这种情况下,您可以在 num/3 处停止,因为您正在跳过 2。

关于java - 找出假数字的所有因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25668352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com