[ 백준 ] 2581 소수 [ js ]

Ann·2022년 6월 14일
0

Algorithm

목록 보기
9/53

2581 소수

문제

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.

입력

입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.

M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.

출력

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.

단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

풀이

let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
// let input = [60, 100];
let num1 = parseInt(input[0]);
let num2 = parseInt(input[1]);
let arr = [];

function isPrime(num){
  if(num===1) return false;
  for(let i=2; i<=parseInt(Math.sqrt(num)); i++){
      if(num%i===0) return false;
  }
  return true;
};

for(let i=num1; i<=num2; i++){
    if(isPrime(i)) arr.push(i);
};

let sum = 0;
for(let i=0; i<arr.length; i++){
    sum += arr[i];
}

if(arr.length === 0){
    console.log(-1);
}else{
    console.log(sum);
    console.log(arr[0]);

소수 구하는 function으로 작은 순서대로 array에 push하고 합을 구하여 각각 출력하였다

profile
안녕하세요

0개의 댓글