- 소수 여부 판별 방법
// 매개변수 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 |