๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“• STUDY/Algorithm

[C / C++] ๋ฐฑ์ค€ 1929๋ฒˆ - ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ / ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด

https://www.acmicpc.net/problem/1929

 

1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ M๊ณผ N์ด ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (1 ≤ M ≤ N ≤ 1,000,000) M์ด์ƒ N์ดํ•˜์˜ ์†Œ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ๋Š” ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net


โœ… ๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ M๊ณผ N์„ ์ž…๋ ฅํ•˜๋ฉด,

M ~ N ์‚ฌ์ด์˜ ์†Œ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.


โœ… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…

์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์—ฌ,

M ~ N์„ ์ฐจ๋ก€๋กœ ํ•˜๋‚˜์”ฉ ๋‚˜๋ˆ ์ง€๋Š” ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(N^2)์œผ๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ฒŒ ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ์—์„œ๋Š” '์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด' ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

๐Ÿ’ก ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด (Sieve of Eratosthenes) ๐Ÿ’ก
์†Œ์ˆ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ๊ทธ ์†Œ์ˆ˜์˜ ๋ชจ๋“  ๋ฐฐ์ˆ˜๋ฅผ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ฒดํฌํ•œ ํ›„,
์ฒดํฌ๋˜์ง€ ์•Š์€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์ด ๋ฌธ์ œ์— ๋Œ€์ž…ํ•˜์—ฌ ์ข€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

1. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ

์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ์ตœ๋Œ€ 1,000,000 ๊นŒ์ง€ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๊ณ ,

M ~ N ์‚ฌ์ด์˜ ์ˆ˜๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ 1,000,001๋กœ ์ •ํ–ˆ๋‹ค.

 

2. ์†Œ์ˆ˜์ธ์ง€ ์ ๊ฒ€ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ

์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ 1์„ ์ œ์™ธํ•˜๊ณ , 2๋ถ€ํ„ฐ sqrt(N)๊นŒ์ง€ ์ฐจ๋ก€๋กœ ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

(๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” sqrt()๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , i * i <= n ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.)

 

๋งŒ์•ฝ ์†Œ์ˆ˜์ผ ๊ฒฝ์šฐ,

๊ทธ ์ˆซ์ž์˜ ๋ชจ๋“  ๋ฐฐ์ˆ˜๋ฅผ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํ‘œ์‹œํ•˜๋ฉด ๋œ๋‹ค.

 

3. ์†Œ์ˆ˜์ธ์ง€ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ

M ~ N ์‚ฌ์ด์˜ ๋ฐฐ์—ด์—์„œ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํ‘œ์‹œ๋œ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

๋งŒ์•ฝ 2๋ถ€ํ„ฐ N์‚ฌ์ด์˜ ์†Œ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ๋ผ๋ฉด

2๋ฒˆ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋ฐ”๋กœ ์ถœ๋ ฅํ•ด๋„ ๋˜์ง€๋งŒ,

์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ M ~ N ์‚ฌ์ด์˜ ์†Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋งŒ๋“ค์—ˆ๋‹ค.

 

์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋” ์ž˜ ๋˜๋‹ˆ ์ฐธ๊ณ !


โœ… ์ฝ”๋“œ_C++