【发布时间】:2019-02-14 00:37:36
【问题描述】:
我写了一个函数,它可以找到某个数的最大素数。此功能有效,但问题是它太慢了。例如,当我输入 600851475143 作为参数时,查找最大素数的过程持续了太长时间。如何修改它以使其更快地工作? 这是我的代码:
class test {
static addArray(someArray, member) {
for (var i = 0; i <= someArray.length; i++) {
if (i == someArray.length) {
someArray[i] = member;
return someArray;
}
}
}
static someLength(someArray) {
var i = 0;
while (someArray[i] !== undefined) {
var lastItem = i;
i++;
}
return i;
}
static testPrime(i) {
for (var k=2; k < i; k++) {
if (i % k == 0) {
return false;
}
}
return true;
}
}
var primeArray = [];
function largestPrime(n) {
for (var i=2; i < n; i++) {
//var k = n / i;
if (n % i == 0 && test.testPrime(i) == true) {
test.addArray(primeArray, i);
n == n / i;
}
}
return primeArray[test.someLength(primeArray) - 1];
}
document.write(largestPrime(600851475143));
【问题讨论】:
-
这是一个代码审查的好问题,而不是 StackOverflow。
-
@ChrisSharp 对于相对较小的数字,它的工作速度更快,我查看了代码,我认为没有额外的花括号。最后一个属于class
标签: javascript function primes