* 소수란?
1과 자기 자신만으로 나누어 지는 1보다 큰 양의 정수
- 소수의 조건
1.1보다 커야한다
2. 2를 제외한 짝수는 소수가 아니다(2는 소수임)
3. 3부터 자기 자신까지 반복하면서 나눠서 떨어지는 수(약수)가 하나라도 있으면 소수가 아니다.
* Math.sqrt( ) : 숫자의 제곱근 반환
let sqrt = Math.sqrt(num)
num = 18;
1,2,3,6,9,18
1*18, 2*9, 3*6, 루트18=Math.sqrt(18), 6*3, 9*2, 18*1
function isPrime(num) {
//Q. 1 이상의 자연수를 입력받아 소수인지 여부를 리턴
//불린 타입으로 리턴 할 것
//받은 숫자를 0부터 받은 숫자까지 증가시키면서 하나씩 대입해서
//나눠보기, 나눠지는 수가 있으면 false, 나눠지는 수가 없으면 true
//2는 true 출력 시켜야 하므로 if문으로 예외 표시
if(num === 1){
return false;
}
if(num === 2){
return true;
}
if(num % 2 === 0){ //2의 배수들은 우선 소수가 아님!
return false;
}
for(let i = 3; i < num; i++){
if(num % i === 0){
return false;
}
}
return true;
}
//Reference code
function isPrime(num) {
let sqrt = parseInt(Math.sqrt(num));
if (num === 1) {
return false;
}
if (num === 2) {
return true;
}
if (num % 2 === 0) {
return false;
}
for (let i = 3; i <= sqrt; i += 2) { //어차피 2의 배수 걸러서 3부터 홀수만 체크
if (num % i === 0) {
return false;
}
}
return true;
}
'codes > 반복문' 카테고리의 다른 글
18_listPrimes (0) | 2022.10.29 |
---|---|
16_getSumOfFactors (0) | 2022.10.29 |
15_computePower (0) | 2022.10.29 |
14_characterAndNumber (0) | 2022.10.27 |
13_replaceAll (0) | 2022.10.27 |