forEach 루프 사용 Javascript에서 1에서 50 사이의 소수 생성 [중복]
Aug 20 2020
여기에 내 코드가 있지만 내 대답은 내가 원하는 것이 아닙니다 ..
이것을 확인하고 Foreach Loop b / w 1-50을 사용하여 소수를 얻는 해결책을주십시오.
미리 감사드립니다 :)
function isPrime(num) {
for ( var i = 2; i < num; i++ ) {
if ( num % i === 0 ) {
return false;
}
}
return true;
}
var txt = "";
function shown(n) {
var arr = [2];
arr.forEach(myFunction);
document.getElementById("foreach").innerHTML = txt;
// document.getElementById('forLoop').innerHTML = arr; // use arr result on your own
}
function myFunction(arr, index, array) {
var i;
var arr = [2];
if ( isPrime(i) ) {
arr.push(i);
}
txt += arr + "<br>";
}
shown(50);
답변
1 KoalaYeung Aug 20 2020 at 14:07
이것은이 수준의 숙제에 대해 너무 진보 된 답변 일 수 있지만 기술적으로는 규칙을 따르고 (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>
NikhileshAgrawal Aug 20 2020 at 12:54
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));
raoabdullah07 Aug 20 2020 at 13:55
이게 맞는 답이라고 생각합니다 .. 코드 애호가 짧고 공격적입니다
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)}`));
Twisty Aug 20 2020 at 12:54
다음 예를 고려하십시오.
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>