๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Lect & Tip/javascript, jQuery

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด JS ์†Œ์ˆ˜ ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋งŒ๋“ค๊ธฐ

by ๋‚ฏ์„ ๊ณต๊ฐ„2019 2023. 11. 10.

๋ชฉ์ฐจ

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด: ์ˆ˜ํ•™๊ณผ ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ์˜ ์ค‘์š”์„ฑ

    ์ˆ˜ํ•™๊ณผ ๊ณ ๋Œ€ ์—ญ์‚ฌ์—์„œ์˜ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ๊ณ ๋Œ€ ๊ทธ๋ฆฌ์Šค ์ˆ˜ํ•™์ž ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค๊ฐ€ ๋ฐœ๊ฒฌํ•œ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์ •ํ•ด์ง„ ๋ฒ”์œ„ ์•ˆ์˜ ๋ชจ๋“  ์†Œ์ˆ˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด, 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ทธ ๋ฐฐ์ˆ˜๋ฅผ ์ง€์›Œ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ง€์šฐ๊ณ , ๋‹ค์Œ์œผ๋กœ ๋‚จ์€ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์ธ 3์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ง€์›๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๊ฒฐ๊ตญ ๋‚จ๋Š” ์ˆ˜๋“ค์ด ๋ฐ”๋กœ ์†Œ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

    ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹จ์ˆœํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋งค์šฐ ์ค‘์š”ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์†Œ์ˆ˜๋Š” ์ˆ˜ํ•™์˜ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•”ํ˜ธํ•™์—์„œ๋„ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํšจ์œจ์ ์œผ๋กœ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ๊ณ ๋Œ€๋ถ€ํ„ฐ ํ˜„๋Œ€์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์—ฌ๋Ÿฌ ๋ถ„์•ผ์—์„œ ์‘์šฉ๋ฉ๋‹ˆ๋‹ค.

    ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ์˜ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด์˜ ์‘์šฉ

    ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ์ดˆ์ ์ธ ์˜ˆ์‹œ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๋Š” ํ•™์ƒ๋“ค์—๊ฒŒ ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์˜ ์‚ฌ์šฉ์„ ๊ฐ€๋ฅด์น˜๋Š”๋ฐ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ปดํ“จํ„ฐ๊ฐ€ ํŠน์ • ๋ฒ”์œ„ ๋‚ด์˜ ์†Œ์ˆ˜๋ฅผ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฐพ๋Š” ๋ฐ์—๋„ ์“ฐ์ž…๋‹ˆ๋‹ค.

    ์•”ํ˜ธํ•™์—์„œ๋Š” ๋Œ€๊ทœ๋ชจ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™”, ๋””์ง€ํ„ธ ์„œ๋ช… ๋“ฑ์—์„œ ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ์ด๋Ÿฌํ•œ ํฐ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ปดํ“จํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด์˜ ํ•œ๊ณ„์™€ ํ˜„๋Œ€์  ์‘์šฉ

    ๋น„๋ก ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๊ฐ€ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ง€๋งŒ, ๋งค์šฐ ํฐ ์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๋ฉด์—์„œ ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ ๊ณผํ•™์ž๋“ค์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋น„ํŠธ๋งต์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น… ๋ฐ์ดํ„ฐ ๋ถ„์„์ด๋‚˜, ๋ณต์žกํ•œ ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋„ ์—ฌ์ „ํžˆ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด ๊ณ ๋Œ€์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ˜„๋Œ€ ๊ธฐ์ˆ ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ€์น˜๋ฅผ ์ฐฝ์ถœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ๊ณ ๋Œ€ ๊ทธ๋ฆฌ์Šค ์‹œ๋Œ€์— ๋ฐœ๊ฒฌ๋œ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ํšจ์œจ์ ์ธ ์†Œ์ˆ˜ ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์ˆ˜ํ•™๊ณผ ์ปดํ“จํ„ฐ ๊ณผํ•™, ํŠนํžˆ ์•”ํ˜ธํ•™์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์˜ค๋Š˜๋‚ ์—๋„ ์—ฌ์ „ํžˆ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‘์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„๋Œ€ ๊ธฐ์ˆ ์˜ ๋ฐœ์ „๊ณผ ํ•จ๊ป˜ ์ตœ์ ํ™”๋˜์–ด ๊ฐ€๋ฉด์„œ, ์ด ๊ณ ๋Œ€์˜ ์ง€ํ˜œ๋Š” ๋”์šฑ ๋ฐœ์ „๋œ ํ˜•ํƒœ๋กœ ์šฐ๋ฆฌ ์‚ถ ์†์— ์Šค๋ฉฐ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ํ™œ์šฉํ•œ JS ์†Œ์ˆ˜ ์ฐพ๊ธฐ ๋กœ์ง ๊ตฌํ˜„ํ•˜๊ธฐ

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ์ˆ˜ํ•™์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ, ํŠน์ • ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ชจ๋“  ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ณ ๋Œ€ ๊ทธ๋ฆฌ์Šค ์ˆ˜ํ•™์ž ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค๊ฐ€ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ, ํšจ์œจ์ ์ธ ์†Œ์ˆ˜ ์ฐพ๊ธฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ดํ•˜๊ธฐ

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์†Œ์ˆ˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค:

    1. ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์†Œ์ˆ˜๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
    2. 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ํŠน์ • ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋“ค์„ ๋ชจ๋‘ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
    3. ๋‹ค์Œ ์†Œ์ˆ˜๋ฅผ ์ฐพ์•„ ๊ทธ ๋ฐฐ์ˆ˜๋“ค์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    4. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์†Œ์ˆ˜๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค.

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ๊ตฌํ˜„ํ•˜๊ธฐ

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋น„๊ต์  ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:

    function findPrimes(n) {
        let array = [], upperLimit = Math.sqrt(n), output = [];
    
        // ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค
        for (let i = 0; i < n; i++) {
            array.push(true);
        }
    
        // ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ
        for (let i = 2; i <= upperLimit; i++) {
            if (array[i]) {
                for (let j = i * i; j < n; j += i) {
                    array[j] = false;
                }
            }
        }
    
        // ์†Œ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ถ”๊ฐ€
        for (let i = 2; i < n; i++) {
            if(array[i]) {
                output.push(i);
            }
        }
    
        return output;
    }
    
    // ์˜ˆ์‹œ: 30๊นŒ์ง€์˜ ์†Œ์ˆ˜ ์ฐพ๊ธฐ
    console.log(findPrimes(30));

    ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ์ ํ™”

    ์ด ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ž‘์€ ์ˆซ์ž์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ, ๋งค์šฐ ํฐ ์ˆซ์ž ๋ฒ”์œ„์— ๋Œ€ํ•ด์„œ๋Š” ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

    • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์ด๋‚˜ ์›น ์›Œ์ปค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ์„ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฐฐ์—ด ๋Œ€์‹  ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฐ•๋ ฅํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„์€ ๊ฐ„๋‹จํ•˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ˆ˜ํ•™์  ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์ „ํ•ด๋ณด์„ธ์š”.

    ํ‚ค์›Œ๋“œ

    • ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ์†Œ์ˆ˜ ์ฐพ๊ธฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ตœ์ ํ™”, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ, ์ž๋ฃŒ๊ตฌ์กฐ, ์ˆ˜ํ•™์  ๋ฌธ์ œ ํ•ด๊ฒฐ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ.

    ํ‚ค์›Œ๋“œ

    • ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด, ์†Œ์ˆ˜ ์ฐพ๊ธฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ˆ˜ํ•™, ์ปดํ“จํ„ฐ ๊ณผํ•™, ์•”ํ˜ธํ•™, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต์œก, ์ตœ์ ํ™” ๊ธฐ๋ฒ•, ๋น… ๋ฐ์ดํ„ฐ, ๊ณ ๋Œ€ ๊ทธ๋ฆฌ์Šค
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€