我已经在用户提示输入的特定范围之间创建了JavaScript素数生成器。
我的问题是我不想使用该函数来解决此查询,任何人都建议我要进行哪些更改,以使此代码更简短,更容易理解。
代码在下面列出:
function isPrime(z) {
var flag = true;
if (z == 0 || z == 1) {
flag = false;
}
for (let y = 2; y < z; y++) {
for (let t = 1; t <= y; t++) {
if (t % y == 0) {
break;
} else if (z % y == 0) {
flag = false;
}
}
}
return flag;
}
var userInput = +prompt('Please Enter Your Value To check Prime Number list between a range');
var arrayToCheck = [];
for (var i = 1; i < userInput; i++) {
if (isPrime(i) == true) {
arrayToCheck.push(i);
}
}
for (i = 0; i < arrayToCheck.length; i++) {
var r = i + ')' + ' ' + arrayToCheck[i] + ', ' + ' ';
document.write(r);
}
console.log(arrayToCheck);
您已经实现了类似Sieve of Eratosthenes ...之类的功能。您可能要做的最好的事情就是花几分钟阅读我链接的页面。实际的Sieve算法非常简单,并且您显然知道足够的Javascript来实现它,而不会带来太多麻烦。
您可以在评估引用为真时利用内置功能。因此,与其说:如果(isPrime(i)== true)这样评估真实性:if(isPrime)利用新的ES6功能字符串插值也将很不错。像这样使用模板文字:var r =`$ {i})$ {arrayToCheck [i]},;也检查一下https://github.com/rwaldron/idiomatic.js/blob/master/readme.md希望对您有所帮助。