Sieve of Eratosthenes

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ด ๋•Œ ํŠน์ • ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 1๋ถ€ํ„ฐ ํŠน์ • ์ˆซ์ž N ๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘, ์–ด๋–ค ์ˆ˜๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด N์ด 100์ด๋ฉด, 1๋ถ€ํ„ฐ 100๊นŒ์ง€์˜ ๋ชจ๋“  ์†Œ์ˆ˜๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด์ž.

  1. ์›ํ•˜๋Š” ๋ฒ”์œ„(N)๋งŒํผ boolean ๋ฐฐ์—ด isNotPrime์„ ์ƒ์„ฑํ•œ๋‹ค. (์†Œ์ˆ˜ => False)

  2. ์ œ์ผ ์ž‘์€ ์†Œ์ˆ˜์ธ 2๋ถ€ํ„ฐ N๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    1. ๋งŒ์•ฝ isNotPrime[i]๊ฐ€ True๋ผ๋ฉด, ๋‹ค์Œ ์ˆซ์ž๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

    2. ์ˆซ์ž i์˜ 2๋ฐฐ์ˆ˜๋ถ€ํ„ฐ i ๋ฐฐ์ˆ˜์— ํ•ด๋‹น ์ˆซ์ž์˜ isNotPrime๊ฐ’์„ True๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

์œ„ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•œ ํ›„, isNotPrime ๊ฐ’์ด False์ธ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ด๋‹ค.

Last updated