在我的课堂上,我们被分配了一个问题来创建一个“分解器”应用程序,该应用程序计算任何数字的素数分解,直到一个非常大的数字。他给了我们一个Number.java
类,用于计算数字是否为素数,以供显而易见的用途。
// Number.java
public class Number {
long n;
public Number(long number) {
n = number;
}
boolean isPrime() {
for(long k = 2; k < n; k++) {
if(n % k == 0) return false;
}
return true;
}
}
唯一的问题是这个Number.java
类是它有一个构造函数,在我看来这使得它在这种情况下不那么“移动”。我的意思是,在我计算参数的主要因素的循环中,一个新的 Number 对象被一遍又一遍地创建。private Number isPrimeFactor = new Number()
在顶部定义 a 而不是Number isPrimeFactor = new Number(i)
为循环的每次重复都创建一个新的不是更有意义吗?我问过我的老师,但他并没有真正回答。这是我正在谈论的一些示例代码。
while (remainder!=0 && j<n) {
Number isFactor = new Number(j);
if(isFactor.isPrime() && remainder%j==0) {
remainder = remainder / j;
factor[i]=j;
temp = (int) j;
multiplicity[temp] = multiplicity[temp]+1;
i++;
} else {
j++;
}
}