소수(Prime Number)는 1과 자기 자신만을 약수로 가지는 1보다 큰 자연수입니다. JavaScript에서 소수를 생성하려면 반복문과 나머지 연산자(%)를 활용해 각 숫자가 다른 수로 나누어지는지 확인하는 방식으로 구현할 수 있습니다.
JavaScript 소수 생성 예제
아래 코드는 1부터 20까지의 숫자 중에서 소수만 찾아 화면에 출력하는 예제입니다.
<html>
<head>
<title>JavaScript Prime</title>
</head>
<body>
<script>
for (var limit = 1; limit <= 20; limit++) {
var a = false;
for (var i = 2; i <= limit; i++) {
if (limit % i === 0 && i !== limit) {
a = true;
}
}
if (a === false) {
document.write("<br>" + limit);
}
}
</script>
</body>
</html>코드 동작 원리
이 코드의 핵심 로직은 다음과 같습니다.
첫 번째 for 루프가 1부터 20까지의 숫자를 하나씩 확인합니다. 각 숫자(limit)에 대해 두 번째 내부 루프가 2부터 해당 숫자 자신까지 반복하면서 나머지 연산(limit % i === 0)을 수행합니다.
만약 자기 자신(i !== limit)을 제외한 다른 수로 나누어떨어진다면 그 숫자는 소수가 아니므로 플래그 변수 a를 true로 설정합니다. 내부 루프가 끝난 후에도 a가 여전히 false라면, 즉 어떤 수로도 나누어떨어지지 않았다면 그 숫자는 소수이므로 document.write()로 출력됩니다.
실행 결과
위 코드를 실행하면 1부터 20 사이의 소수인 다음 값들이 출력됩니다.
2, 3, 5, 7, 11, 13, 17, 19
성능 개선 팁
위 방식은 이해하기 쉽지만 비효율적일 수 있습니다. 소수 판별 시 내부 루프를 i <= Math.sqrt(limit)까지만 실행하면 연산 횟수를 크게 줄일 수 있습니다. 또한 실무에서는 document.write() 대신 배열에 결과를 담아 console.log()나 DOM 조작으로 출력하는 것이 권장됩니다.