[문제] 소수 구하기

권숙현·2023년 9월 11일

Javascript's Adventure

목록 보기
9/10

📖 소수란?

1과 자기 자신만을 약수로 가지는 수

1. while문과 if~else문을 사용하여 1에서 20까지 숫자의 소수 여부를 판별해보자.

  • 매개변수 n이 소수라면 true를, 소수가 아니라면 false를 반환
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));
}

2. 1부터 200까지 사이의 소수의 합 구하기

  • 반복문과 조건문 이용하여 소수의 합을 구하여라

    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();
profile
sukki의 velog*^^*

0개의 댓글