https://www.acmicpc.net/problem/1978
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim()
.split('\n')[1].split(' ')
const solution = (input) => {
let count = 0
for(let i=0; i<input.length; i++){
const v = +input[i]
if(v === 2 || v === 3){
count++
}else{
const end = parseInt(Math.sqrt(v))
for(let j=2;j<=end;j++){
if(v % j === 0){
break;
}else if(j>end-1){
count++
}
}
}
}
return count
}
console.log(solution(input))
소수는 1과 자기 자신만을 약수로 가지는 수이다.
순회 횟수를 줄이기 위해 Math.sqrt()
를 사용하여 제곱근이하의 숫자까지만 나머지 연산을 실행한다.
2와 3은 제곱근이 2보다 작아서 for문 순회에서 제외되므로 따로 조건문을 작성했다.