1과 자기 자신만을 약수로 가지는 수
function isPrime(n) {
var divisor = 2;
if (n == 1) return false;
while (n > divisor) {
if (n % divisor === 0) {
return false;
} else {
divisor++;
}
}
return true;
}
for (var i = 1; i <= 20; i++) {
document.writeln(i, isPrime(i));
}
3가지 방법으로 풀이
1) N의 제곱근보다 작은 수까지만 나눠보면, 그보다 큰 수로는 나눠지지 않는다.
(ex. n이 100일때, 제곱근은 10이다. 100을 x*y라고 표현했을 때, x,y가 둘 다 10보다 큰 약수는 없다.)
2) N/2 까지만 나누어서 계산하기
3) N-1 까지 전부 계산하기
// N의 제곱근까지 나누어서 계산하기
function sumOfPrimes() {
var sum = 0;
for (var num = 2; num <= 200; num++) {
var isPrime = true;
for (var i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
isPrime = false;
break;
}
}
if (isPrime) {
sum += num;
}
} document.write("1이상 200이하의 소수의 합 = " + sum);
} sumOfPrimes();
// N/2까지 나누어서 계산하기
function sumOfPrimes() {
var sum = 0;
for (var num = 2; num <= 200; num++) {
var isPrime = true;
for (var i = 2; i <= num / 2; i++) {
if (num % i === 0) {
isPrime = false;
break;
}
}
if (isPrime) {
sum += num;
}
} return sum;
} console.log(sumOfPrimes());
// N-1까지 전부 계산하기
function solution() {
let sum = 0;
let j;
for (let i = 1; i <= 200; i++) {
for (j = 2; j <= i; j++) {
if (i % j == 0) break;
}
if (j == i) sum += j;
} console.log("1이상 200이하의 소수의 합 = " + sum);
} solution();