자바스크립트

소수 문제

2022. 9. 23. 21:09

- 소수 여부 판별 방법

// 매개변수 n이 소수라면 true를, 소수가 아니라면 false를 반환
isPrime(n) {
	//나누는 숫자는 2부터 시작
	let divnum = 2;
    //1은 소수가 아님
    if (n == 1) {
    	return false;
    }
    
    //n보다 작은걸로 나누는데 나누어떨어지면 false
    while(n > divnum) {
    	if(n % divnum === 0) {
    		return false;
    	} else {
    		divnum++ ;
    	}
	}
    //관문을 다 거치고도 살아남았다면 소수!
    return true;
}

- 소수의 합 구하기 (var버전)

//소수들을 더해야 하니 0부터 더해나가자
var result = 0;

// 1부터 200까지의 자연수
for(var num = 1; num <= 200; num++){

    // 1로는 당연히 나누어지므로 나누는 수는 2부터 시작
	for(var divnum = 2; divnum < num; divnum++){
    	// 자기자신보다 작은수인데 나누어떨어지면?
    	if (num % divnum === 0){
        	// 바로탈락. 다음 숫자(num) 검증하기.
        	break;
        }
    // for문 지나쳐서 내려오는 경우는 num===1이거나, num===divnum 
    // 하지만 1은 소수가 아니라서 애초에 언급X
    } if(num === divnum){
    	//지금 자기자신으로만 나누어지는 수가 바로 소수! 더해더해
    	result += num;
    } /* 여기서 else 케이스 넣어줘도 되지만 필요 X */
}
document. write(result);

14번 라인이 가능한 이유는 변수 선언을var로 했기 때문!

var 선언이 어디서 선언하던지 전역스코프로 지원되어버리는 특성이 있어서..

let사용 시 해당 for문 안에서만 divnum이 존재한다.(로컬스코프)

https://sunnyscript.tistory.com/55

 

 

 

- 소수의 합 구하기 (let버전)

// -------------if조건 &&으로 묶음-----------------
let result = 0;

// 1부터 200까지 중에서
for(let num = 1; num <= 200; num++) {
	for(let divnum = 2; divnum <= num; divnum++){
    	// divnum===num을 위에서 확인해줘야 2가 소수로 포함이 된다
        if(num % divnum === 0 && divnum === num){
            result += num;
        }else if (num % divnum === 0 && divnum !== num){
            break;
        }
    }
}
document.write(result);

//-------------------if조건 분리-------------------
let result = 0;

for(let num = 1; num <= 200; num++) {
    for(let divnum = 2; divnum <= num; divnum++){
        if(num%divnum===0){
            if(divnum===num){
                result += num;
            }else{
                break;
            }
        }
    }
}
document.write(result);

== 값이 같은지 비교

=== 데이터 유형까지 같은지 비교

!= 값이 다름 비교

!== 데이터유형까지 다름 비교 (!=== 가 아님)

'자바스크립트' 카테고리의 다른 글

애니매이션 만드는 법  (0) 2022.10.08
외부문서를 연결해주는 <link>  (0) 2022.10.07
Math.random 랜덤숫자 활용하기  (0) 2022.09.09
event 설정  (0) 2022.09.08
document.getElementBy~ 알아보기  (0) 2022.09.08