谢谢阅读。总的来说,对于 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)