谢谢阅读。对 Javascript 和一般编程来说相当新。
我正在寻找一种方法来返回给定数字的最大质因数。我的第一直觉是使用 while 循环来计算并找到数字的质因数,将这些因数存储在一个数组中并在每次找到时重置。这样数组中的最后一项应该是最大的质因数。
var primerizer = function(input){
var factors = [];
var numStorage = input
for (x=2; numStorage != 1; x++){ // counter stops when the divisor is equal to the last number in the
// array, meaning the input has been fully factorized
if (result === 0) { // check if the number is prime; if it is not prime
factors.push(x); // add the divisor to the array of prime numbers
numStorage = numStorage/x // divide the number being calculated by the divisor
x=2 // reset the divisor to 2 and continue
};
};
primeFactor = factors.pop();
return primeFactor;
}
document.write(primerizer(50))
这仅返回 2、未定义或什么都不返回。我担心的是 for 循环的停止条件必须根据与开始条件相同的变量来定义,所以我尝试用 while 循环代替。
var primerizer = function(input){
var factors = [];
var numStorage = input
x=2
while (numStorage != 1){
var result = numStorage%x;
if (result === 0) {
factors.push(x);
numStorage = numStorage/x
x=2
}
else {
x = x+1
}
}
return factors.pop();
}
document.write(primerizer(50)
同样的问题。也许我忽略的语法有问题?任何输入都非常感谢。
谢谢你。
最佳答案
我找到的最短答案是:
function largestPrimeFactor(n){
var i=2;
while (i<=n){
if (n%i == 0){
n/=i;
}else{
i++;
}
}
console.log(i);
}
var a = **TYPE YOUR NUMBER HERE**;
largestPrimeFactor(a)
关于javascript - 用 Javascript 找出最大的质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22804017/