Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
iamkanguk97 opened this issue Apr 15, 2024 · 9 comments

Comments

@iamkanguk97
Copy link

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

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

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

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

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

@ZeroCho
Copy link
Owner

ZeroCho commented Apr 15, 2024

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

@iamkanguk97
Copy link
Author

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

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

입니다!

감사합니다.

@ZeroCho
Copy link
Owner

ZeroCho commented Apr 15, 2024

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

@iamkanguk97
Copy link
Author

iamkanguk97 commented Apr 15, 2024

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

<prime.js>

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만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드입니다.

<설명>

  • 위의 prime.js 코드는 지금 2부터 1,001만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드라고 판단됩니다.
  • 그래서 저는 위의 prime.js 코드에서 max를 9999999로 바꿔야 지금 책에서 설명하는 문구인 2부터 1,000만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드입니다. 에 맞는 것 같다고 생각이 듭니다.
  • 만약에 max를 9999999로 바꾸지 않는 경우에는 max를 10000000로 그대로 두고, 책에서 설명하는 문구를 2부터 1,000만~이 아닌 2부터 1,001만~으로 변경하면 될 것 같다고 생각이 들었습니다.

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

@ZeroCho
Copy link
Owner

ZeroCho commented Apr 15, 2024

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

@iamkanguk97
Copy link
Author

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

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

감사합니다!

@ZeroCho
Copy link
Owner

ZeroCho commented Apr 15, 2024

넵 코드 수정해두겠습니다

@iamkanguk97
Copy link
Author

감사합니다!

@ZeroCho ZeroCho added 2쇄 and removed 3쇄 labels Apr 19, 2024
ZeroCho added a commit that referenced this issue Apr 19, 2024
ZeroCho added a commit that referenced this issue Apr 19, 2024
@ZeroCho ZeroCho mentioned this issue Apr 19, 2024
@ZeroCho
Copy link
Owner

ZeroCho commented Apr 19, 2024

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

@ZeroCho ZeroCho reopened this Apr 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants