尝试获取数字的最大质因数时浏览器崩溃 (Javascript)
Browser Crashes when trying to get Largest Prime Factor of a number (Javascript)
下面是代码。当使用小数(5 位)或大数(12 位)的数字参数调用函数 largestPrime(number) 时,此代码每次都会使浏览器崩溃。我仔细审查了它,但仍然不知道出了什么问题。请不要用不同的解决方案来回答这个 objective,我想了解我的代码有什么问题。谢谢!
var sqRoot = function(n) {
return Math.sqrt(n);
}
var isInt = function(n) {
if(n%1 === 0) {
return true;
}
else {
return false;
}
}
var primeCheck = function(n) {
var res = true;
var y = 2;
while(y <= sqRoot(n) && res === true) {
if(!isInt(n) || isInt(n/y)) {
res = false;
}
else {
y+=1;
}
}
return res;
}
var largestPrime = function(n) {
var y =2;
var temp = true;
var res = n/y;
while(temp === true) {
if(primeCheck(res)) {
temp = false;
}
else {
y+=1;
}
}
return res;
}
largestPrime(/*here goes the number to be evaluated*/)
你在 largestPrime
中的 res
在循环体中从未被改变,所以程序进入了无限循环。
下面是代码。当使用小数(5 位)或大数(12 位)的数字参数调用函数 largestPrime(number) 时,此代码每次都会使浏览器崩溃。我仔细审查了它,但仍然不知道出了什么问题。请不要用不同的解决方案来回答这个 objective,我想了解我的代码有什么问题。谢谢!
var sqRoot = function(n) {
return Math.sqrt(n);
}
var isInt = function(n) {
if(n%1 === 0) {
return true;
}
else {
return false;
}
}
var primeCheck = function(n) {
var res = true;
var y = 2;
while(y <= sqRoot(n) && res === true) {
if(!isInt(n) || isInt(n/y)) {
res = false;
}
else {
y+=1;
}
}
return res;
}
var largestPrime = function(n) {
var y =2;
var temp = true;
var res = n/y;
while(temp === true) {
if(primeCheck(res)) {
temp = false;
}
else {
y+=1;
}
}
return res;
}
largestPrime(/*here goes the number to be evaluated*/)
你在 largestPrime
中的 res
在循环体中从未被改变,所以程序进入了无限循环。