• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

제가 작성한 코드에 궁금한 점이 있어요!

19.02.16 00:02 작성 조회수 92

0

안녕하세요 선생님!
해설강의 보기 전에 작성한거라 이렇게 해도 되는지 궁금해서요.
일단 작동은 제대로 하는 것 같은데 더 간소화? 할 수 있는 부분은 없는지도 궁금하고요.

    <script>
        var i = Number(prompt("insert number except '1'"));
        var n = 2;
        while (i % n != 0) {
            n++; 
            console.log(i,n,i%n);
        }
        if (n != i) {
            document.write(i + " is not a prime number.");
        } else {
            document.write(i + " is a prime number.");
        }
    </script>        

while 문으로 작성했을 때, 콘솔에 짝수는 아예 console.log 가 안뜨더라구요.
var n = 2 로 설정하고 시작해서 인 것 같은데, 코드를 어떻게 수정하면 2로 나눈 것도 나머지가 0인게 뜰까요?
(3 부터는 다 떠요!)

그리고 여기서 while 문을 for 문으로 바꿔봤는데

         for (var n = 2; i % n != 0; n++) {
            console.log(i,n,i%n);
        }

이렇게 바꿨더니 콘솔에서 표시되는 부분이 달라지네요.
while 문일 때는 콘솔에 자기자신으로 나눠서 나머지가 0 이 되는 것까지 찍혔는데,
for 문으로 바꾸니까 콘솔에는 자기 자신 -1 로 나눈 것까지만 나오더라구요.
(for 문으로 바꿔도 소수이다/아니다 판별은 제대로 하긴 해요!)
보는 입장(?)에서 콘솔에 자기 자신으로 나눈 나머지가 0 인 것까지 나와야 소수인걸 확실히 이해할 것 같은데.. 코드를 어떻게 수정하면 되는 걸까요?
(혹시나 하고 console.log 앞이나 뒤에 n++; 를 넣어보았지만.. 무한히 나누기를 하는 재앙이...ㅠㅠ)

답변 1

답변을 작성해보세요.

0

1) 첫 번째는 do ~ while 문을 사용하면 됩니다. 그다지 많이 사용하는 문법은 아닙니다.

2)

for (var n = 2; n <= i; n++) {

//...

}

로 바꿔 보세요.

그런데 자기 자신으로는 나눌 필요가 없습니다.

마찬가지로 2를 제외한 짝수는 소수가 아닌게 당연하므로 찍지 않아도 될 것 같습니다.

지금 코드도 괜찮습니다.