gpt4 book ai didi

java - 计算素因数分解的更有效方法?

转载 作者:行者123 更新时间:2023-12-01 11:42:57 25 4
gpt4 key购买 nike

我目前有一个程序可以找到给定数字的质因数分解;对于较小的数字可以很好地工作,但是对于超过一百万的数字则需要很长时间。我的代码效率极低,查找输入下方的所有素数并检查哪些素数相除而无余数。我不知道如何降低效率,有什么帮助吗?

static ArrayList<Integer> primeNumbersBelow(long n) {

ArrayList<Integer> ay = new ArrayList<Integer>();
ay.add(2);

for(int i = 3; i < ((n % 2 != 0) ? (n + 1) / 2 : n / 2); i++) {
boolean divides = false;
for(int j = 2; j < i; j++) {
if(i % j == 0) {
divides = true;
}
}
if(!divides) {
ay.add(i);
System.out.println(i);
}
}
return ay;
}

static ArrayList<Integer> primeFactorisationOf() {

ArrayList<Integer> ay = new ArrayList<Integer>();
ArrayList<Integer> aay = primeNumbersBelow(input);
long n = input;

for(int i = 0, len = aay.size(); i < len; i++) {
int f = aay.get(i);
boolean run = true;

while(run) {
if(n % f == 0) {
ay.add(f);
n /= f;
} else {
run = false;
}
}
}
return ay;
}

最佳答案

来自Mr Lars Vogel @ vogella ...

 public static List<Integer> primeFactors(int number) {
int n = number;
List<Integer> factors = new ArrayList<Integer>();
for (int i = 2; i <= n; i++) {
while (n % i == 0) {
factors.add(i);
n /= i;
}
}
return factors;
}

关于java - 计算素因数分解的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29372991/

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