Javascript 在JS中给出重复的素因子分解
前三行是准确的,但6^2只是2和3的重复。如何使6^2不显示,以及如何解决其他类似的问题,如输入1000时给出的额外25Javascript 在JS中给出重复的素因子分解,javascript,Javascript,前三行是准确的,但6^2只是2和3的重复。如何使6^2不显示,以及如何解决其他类似的问题,如输入1000时给出的额外25 另外,我知道这段代码需要做的工作比必要的多,但我还是宁愿让它或多或少地工作,也不愿用其他方法完全替换它。您正在通过执行n=m将n重置为其原始值。这就是为什么你会得到非素因子的原因。而且,您不需要o。此外,您需要运行外部循环直到m/2+1,而不仅仅是直到m/2。请参阅下面的更正版本 var userNumber=parseInt(提示(“您希望计算的数字是多少?”); var
另外,我知道这段代码需要做的工作比必要的多,但我还是宁愿让它或多或少地工作,也不愿用其他方法完全替换它。您正在通过执行
n=m将n重置为其原始值代码>。这就是为什么你会得到非素因子的原因。而且,您不需要o
。此外,您需要运行外部循环直到m/2+1,而不仅仅是直到m/2。请参阅下面的更正版本
var userNumber=parseInt(提示(“您希望计算的数字是多少?”);
var分解=函数(n){
var m=n;
VarO=n;
对于(i=2;i1){
控制台日志(i+“^”+p);
}
否则{
控制台日志(i);
}
}
else{}
}
};
保理(用户编号)代码>除了重复之外,您的代码还有其他错误。试着把10个因素考虑进去。它给出2,而不是2和5,试着得到10的因子。它只给出2。还是wrong@AlbertoTrindadeTavares抢手货请参阅更正的版本。对于OP,我建议您下次在发布问题之前更仔细地调试代码。我对编码非常陌生。这是因为盯着代码看了半个小时,不知道如何修复它。如果我没有试图修复它,我是不会发布的。谢谢你的帮助。
var userNumber = parseInt(prompt("What number would you like to have factored?"));
var factoring = function(n) {
var m = n;
var o = n;
for(i = 2; i < n/2; i++) {
if (m % i === 0 && o % i === 0) {
var p = 0;
while (n % i === 0) {
n = n / i;
p++;
}
n = m;
o = o / i;
if (p > 1) {
console.log(i + "^" + p);
}
else {
console.log(i);
}
}
else {}
}
};
factoring(userNumber);
2^2
3^2
5^2
6^2