UXUI 웹디자인 과정/JS 연습문제 풀이

범위를 입력하면 그 사이에 있는 소수를 구하는 코드

var prime_arr=[];
function prime(n1,n2){
  for(n1; n1<=n2; n1++){
    for(var i=2; i<n1; i++){
      if(n1%i==0){
        var result=0;
        break;
      } else{
        var result=1;
      }
    }
    if(result==1){
      prime_arr.push(n1);
    }
  }
}
var num1=prompt("첫번째 정수 입력");
var num2=prompt("두번째 정수 입력");
num1=Number(num1);
num2=Number(num2);
prime(num1,num2);
document.write(num1 + "과 " + num2 + "사이에 있는 소수는 " + prime_arr + "입니다.");

중첩 반복문 사용. 중첩 반복문으로 두 범위 사이의 숫자들을 반복해서 소수인지 판별한다. 판별 결과가 참일 경우 배열에 그 값을 집어 넣는다.

 

소수를 판별하는 반복문에서는 소수가 아닌 것으로 확인되면 바로 break로 반복문을 종료시키고, 맞을 경우 판별 결과에 참을 넣고 반복문을 계속 진행한다.

 


* 수정

var prime_arr=[];
function prime(n1,n2){
  if(n1==2){
    prime_arr.push(n1);
  } else if(n2==2){
    prime_arr.push(n2);
  }
  var result=0;
  for(n1; n1<=n2; n1++){
    for(var i=2; i<n1; i++){
      if(n1%i==0){
        var result=0;
        break;
      } else{
        var result=1;
      }
    }
    if(result==1){
      prime_arr.push(n1);
    }
  }
}
var num1=prompt("첫번째 정수 입력");
var num2=prompt("두번째 정수 입력");
num1=Number(num1);
num2=Number(num2);
prime(num1,num2);
if(prime_arr==0){
  document.write(num1 + "과 " + num2 + "사이에 소수가 없습니다.");  
} else {
  document.write(num1 + "과 " + num2 + "사이에 있는 소수는 " + prime_arr + "입니다.");
}

1, 2의 경우 기존 작성한 코드로 판별하기 어려워 반복문으로 시작하기에 앞서 if 코드를 추가하였고, 두 정수 사이에 소수가 없을 수도 있기 때문에 그 부분을 감안하여 마지막에 출력하는 코드 역시 if 코드로 배열에 아무것도 없다면 소수가 없다는 결과물을 출력하도록 구성했다.