1644. 소수의 연속합 - node.js / javascript
문제
내 코드
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim();
const N = Number(input);
let primes = [];
function eratosthenesSieve(array, number) {
let tempArray = [];
for (let i = 2; i <= number; i++) {
tempArray[i] = i;
}
for (let i = 2; i <= number; i++) {
if (tempArray[i] === 0) {
continue;
}
for (let j = i + i; j <= number; j += i) {
tempArray[j] = 0;
}
}
for (let i = 2; i <= number; i++) {
if (tempArray[i] !== 0) {
array.push(tempArray[i]);
}
}
return array;
}
eratosthenesSieve(primes, N);
let left = 0;
let right = 1;
let sum = primes[left];
let answer = 0;
while (left < primes.length && right < primes.length) {
if (sum === N) {
answer++;
sum += primes[right++];
} else if (sum > N) {
sum -= primes[left++];
} else {
sum += primes[right++];
}
}
if (primes[primes.length - 1] === N) {
answer++;
}
console.log(answer);
깃허브 링크
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim();
const N = Number(input);
let primes = [];
function eratosthenesSieve(array, number) {
let tempArray = [];
for (let i = 2; i <= number; i++) {
tempArray[i] = i;
}
for (let i = 2; i <= number; i++) {
if (tempArray[i] === 0) {
continue;
}
for (let j = i + i; j <= number; j += i) {
tempArray[j] = 0;
}
}
for (let i = 2; i <= number; i++) {
if (tempArray[i] !== 0) {
array.push(tempArray[i]);
}
}
return array;
}
eratosthenesSieve(primes, N);
let left = 0;
let right = 1;
let sum = primes[left];
let answer = 0;
while (left < primes.length && right < primes.length) {
if (sum === N) {
answer++;
sum += primes[right++];
} else if (sum > N) {
sum -= primes[left++];
} else {
sum += primes[right++];
}
}
if (primes[primes.length - 1] === N) {
answer++;
}
console.log(answer);
Author And Source
이 문제에 관하여(1644. 소수의 연속합 - node.js / javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@arthur/1644.-소수의-연속합-node.js-javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)