반복문 18번 문제

code-kay·2020년 10월 28일
1
function listPrimes(num) {
  let result = "2"
  //result의 첫 값에 "-2"가 들어가는걸 막기 위해 2로 시작합니다.
  //그렇지 않으면 않으면 21번째줄 때문에 -2로 시작해버립니다ㅠㅠ
  for (let prime = 3; prime <= num; prime++){
    //녀석이 소수(prime number)인지 알아봐야 하니
    //변수 이름을 prime으로 선언했습니다.
    //2는 이미 들어가 있으므로 3부터 찾아봅니다.
    for (let i = 2; i<=prime; i++){
      //prime을 나눌 값 i를 이중반복문으로 만들어줍니다.
      if (prime%i===0 && i!==prime){
        //i로 나누어 떨어지지만 i가 자기자신이 아닌경우
        //즉, 다른 약수가 있는 경우는 소수가 아닙니다
        prime = prime + 1
        i = 2}
        //소수가 아니므로 다음 수로 넘어갑니다.
        //i역시 처음 값으로 돌려 처음부터 체크합니다.
      else if (prime%i===0 && i===prime){
        //여기까지 왔다면 약수가 자기자신뿐인 녀석입니다.
        //소수를 찾았으므로 결과값에 입력해줍니다.
        result = result + "-" + prime
        
      }
    }
  }
  return result
  //이제 입력된 결과를 리턴해주면 끝!
}

주석 없는 버전!

function listPrimes(num) {
  let result = "2"
  for (let prime = 3; prime <= num; prime++){
    for (let i = 2; i<=prime; i++){
      if (prime%i===0 && i!==prime){
        prime = prime + 1
        i = 2}
      else if (prime%i===0 && i===prime){
        result = result + "-" + prime
        
      }
    }
  }
  return result
}

1개의 댓글