ZeroCho / nodejs-book

Node.js교과서 소스 코드
794 stars 635 forks source link

[개정2판 P.132-133] prime.js 코드에 대한 설명 오류 확인요청 #801

Open iamkanguk97 opened 3 months ago

iamkanguk97 commented 3 months ago

안녕하세요 제로초님! 책을 읽는 도중 한 가지 궁금한 점이 생겨 Issue 남깁니다.

prime.js 에서는 변수로 min을 2로, max로 1000만을 설정해주었습니다. 이후 generatePrimes에 파라미터로 start와 range를 받는데 각각 min과 max를 넣어서 실행시켜줍니다.

책에서는 prime.js 코드 설명을 2부터 1000만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드입니다. 라고 되어있습니다.

제가 잘 이해를 못했을 수도 있는데 prime.js 코드를 보면 2부터 1001만 까지의 숫자 중~ 이 맞지 않을까? 의문이 들었습니다.

제로초님께서 한번 확인해주시면 좋을 것 같아서 이슈 남겼습니다! 감사합니다 :)

ZeroCho commented 3 months ago

1001만이 아니라 10000001을 의미하신건가요? 지금보니 9999999가 맞는것같습니다

iamkanguk97 commented 3 months ago

넵! 코드에서는 min을 2, max를 10000000(1000만) 으로 설정하였고 텍스트를 2부터 1000만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드입니다. 라고 작성을 해주셨는데 다음과 같이 2가지 방법으로 수정하면 될 것 같다는 생각이 들었습니다.

  1. 텍스트를 2부터 1001만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드입니다.
  2. 말씀해주신 것 처럼 코드에서 max를 9999999로 수정

입니다!

감사합니다.

ZeroCho commented 3 months ago

@iamkanguk97 1001만은 10000001의 오타인거죠? 이번에도 그렇게 쓰셔가지고요. ~텍스트를 수정한다면 2부터 9999999까지의 숫자 중에~~~ 로 고쳐야 합니다.~ prime-worker.js랑 헷갈렸네요. prime.js는 1000001이고, prime-worker.js는 9999999여서 코드를 수정해야겠습니다.

iamkanguk97 commented 3 months ago

@ZeroCho "1001만은 10000001의 오타인거죠? 이번에도 그렇게 쓰셔가지고요." <<< 이 부분을 잘 이해를 제가 못했네요 ㅠ

const min = 2;
const max = 10000000;
const primes = [];

function findPrimes(start, range) {
  let isPrime = true;
  const end = start + range;
  for (let i = start; i < end; i++) {
    for (let j = min; j < Math.sqrt(end); j++) {
      if (i !== j && i % j === 0) {
        isPrime = false;
        break;
      }
    }
    if (isPrime) {
      primes.push(i);
    }
    isPrime = true;
  }
}

console.time('prime');
findPrimes(min, max);
console.timeEnd('prime');
console.log(primes.length);

<prime.js를 책에서 설명하는 문구> 2부터 1,000만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드입니다.

<설명>

바쁘신데 헷갈리는 부분이 있어서... 죄송합니다! 마지막으로 한 번 확인해주시면 감사하겠습니다 :)

ZeroCho commented 3 months ago

1001만이 아니라 1000만1 아닌가요? 1001만은 10010000 인데 중간에 10000은 어디서 나온건가요?

iamkanguk97 commented 3 months ago

@ZeroCho 아...... 네..... 맞습니다.....ㅎ...

죄송합니다 제가 멍청했네요... 맞습니다 1000만1 입니다!! 1000만1을 1001만이라고 계속 썼네요.

감사합니다!

ZeroCho commented 3 months ago

넵 코드 수정해두겠습니다

iamkanguk97 commented 3 months ago

감사합니다!

ZeroCho commented 3 months ago

코드 수정되었습니다! 다른 분들도 보실 수 있게 이;슈는 열어둡니다