4 回答
TA贡献1817条经验 获得超14个赞
对于这个级别的作业来说,这可能是一个太高级的答案,但从技术上讲,它遵循规则(使用 Array.forEach)并且有效。
primes()
基于先前的素数生成新的素数。所以不会测试所有整数的提醒,从而更有效。为了保持简短,也有几种箭头函数的用途。如果您确实使用这个答案,请尝试阅读相关文档并了解:
迭代器和生成器
箭头函数表达式
为了...的
模板文字
认真地,试着一步一步地思考。这就是你学习任何东西的方式。
function* primes() {
const previous = [];
for (let i = 2; true; i++) {
let isPrime = true;
for (let p of previous) {
if (i % p === 0) {
isPrime = false;
break;
}
}
if (isPrime) {
previous.push(i);
yield i;
}
}
}
function* takeUntil(cb, iter) {
for (let val of iter) {
if (cb(val)) {
return;
}
yield val;
}
}
function showArrayIn(arr, container) {
arr.forEach(p => container.innerHTML += `${p},<br/>`); // technically, we used Array.forEach.
}
showArrayIn(
// get the prime number array declarativly
Array.from(takeUntil(n => n >= 50, primes())),
// show in the container specified
document.getElementById("results")
);
Primes:
<div id="results"></div>
TA贡献1998条经验 获得超6个赞
考虑以下示例。
function isPrime(num) {
if (num === 1) {
return false;
} else if (num === 2) {
return true;
} else {
for (var x = 2; x < num; x++) {
if (num % x === 0) {
return false;
}
}
return true;
}
}
function shown(n) {
var list = [];
for (var i = 1; i <= n; i++) {
list.push(i);
}
list.slice().reverse().forEach(function(n, k, o) {
if (!isPrime(n)) {
list.splice(o.length - 1 - k, 1);
}
});
document.getElementById("show").innerHTML = list;
}
shown(50);
Prime: <p id="show"></p>
TA贡献1788条经验 获得超4个赞
function primeFactorsTo(max)
{
var store = [], i, j, primes = [];
for (i = 2; i <= max; ++i)
{
if (!store [i])
{
primes.push(i);
for (j = i << 1; j <= max; j += i)
{
store[j] = true;
}
}
}
return primes;
}
console.log(primeFactorsTo(5));
console.log(primeFactorsTo(15));
TA贡献1993条经验 获得超5个赞
我认为这是我应得的正确答案..这是代码爱好者的简短而激进的
function primes(limit)
{
var prime=[], i=1;
while (++i < limit+1) prime.reduce((a,c)=>(i%c)*a,1) && prime.push(i);
prime.unshift(2);
return prime;
}
[50].forEach(n=>document.getElementById('foreach').innerHTML=(`${primes(n)}`));
- 4 回答
- 0 关注
- 127 浏览
添加回答
举报