//Q. 2 이상의 자연수를 입력받아 2부터 해당 수(num)까지의 소수들을 리턴
//출력에 할 것
//break문 사용
//이중 for문으로 작성해야 함
//첫번째 반복문 : num보다 작은 수들 순회 -> 얘네가 각각 소수인지 확인해서 문자열로 합쳐준다
//두번째 반복문 : 소수인지 아닌지 확인하는 작업
//소수의 조건
//1.1보다 커야한다
//2. 2를 제외한 짝수는 소수가 아니다(2는 소수임)
//3. 3부터 자기 자신까지 반복하면서 나눠서 떨어지는 수(약수)가 하나라도 있으면 소수가 아니다.
//4. 2를 제외한 모든 짝수는 소수가 아님
//ex) num = 15,'2-3-5-7-11-13'
function listPrimes(num) {
let result = '2'; //2를 제외한 모든 짝수는 소수가 아님
//첫번째 반복문 : num보다 작은 수들 순회 -> 얘네가 각각 소수인지 확인해서 문자열로 합쳐준다
for(let prime = 3; prime <= num; prime += 2){ //3,5,7,9 순서로 확인
let isPrime = true;
//두번째 반복문 : 소수인지 아닌지 확인하는 작업
for(let i = 3; i < prime; i += 2){//3. 홀수만 확인하기
if(prime % i === 0 ){ //나눠서 떨어지면 소수가 아님
isPrime = false;
}
}
if(isPrime === true){ //소수이면
result = `${result}-${prime}`;
}
}
return result;
}
//Reference code
function listPrimes(num) {
let result = '2';
for (let candi = 3; candi <= num; candi += 2) {
let isPrime = true;
let sqrt = parseInt(Math.sqrt(candi));
for (let divider = 3; divider <= sqrt; divider += 2) {
if (candi % divider === 0) {
isPrime = false;
break;
}
}
if (isPrime) {
result = `${result}-${candi}`;
}
}
return result;
}