Skip to main content

์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋ฆฌํŒฉํ„ฐ๋ง

Copilot Chat์€ ๋А๋ฆฌ๊ฒŒ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ€์†ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์ฝ”๋“œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ, ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋”ฉ์˜ ์˜ˆ๋กœ๋Š” ๋น„ํšจ์œจ์ ์ธ ๋ฃจํ”„, ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ, ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Copilot Chat์€ ์„ฑ๋Šฅ ํ•ซ์ŠคํŒŸ์„ ์‹๋ณ„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ตœ์ ํ™”(์˜ˆ: ๋ฐฐ์—ด ๋Œ€์‹  ํ•ด์‹œ๋งต ์‚ฌ์šฉ), ์ค‘๋ณต ๊ณ„์‚ฐ ๊ฐ์†Œ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํšจ์œจ์„ฑ ํ–ฅ์ƒ๊ณผ ๊ฐ™์€ ๋ฆฌํŒฉํ„ฐ๋ง ์ „๋žต์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•ด ์บ์‹ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‚˜ ๋ณ‘๋ ฌ ์ž‘์—…์„ ๊ถŒ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค

๋‹ค์Œ Python ์ฝ”๋“œ๋Š” ์ตœ๋Œ€ 10,000๋ฒˆ์งธ ์†Œ์ˆ˜๊นŒ์ง€ ๋งค 1,000๋ฒˆ์งธ ์†Œ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ด๋จธ๋ฅผ ํฌํ•จํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์ถœ๋ ฅ์˜ ๋งˆ์ง€๋ง‰ ์ค„๋กœ ์‹คํ–‰๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

import time

def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

def every_1000th_prime():
    primes = []
    num = 2
    while len(primes) < 10000:
        if is_prime(num):
            primes.append(num)
        num += 1
    return [primes[i] for i in range(999, 10000, 1000)]

if __name__ == "__main__":
    start_time = time.time()
    primes = every_1000th_prime()
    for prime in primes:
        print(prime)
    end_time = time.time()
    elapsed_time = end_time - start_time
    print(f"Time taken: {elapsed_time:.10f} seconds")

์˜ˆ์‹œ ํ”„๋กฌํ”„ํŠธ

Optimize this code for performance

์˜ˆ์ œ ์‘๋‹ต

Copilot๋Š” ์ฒด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ˆ˜๋ฅผ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ์ž ์‹œ ํ›„์— ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

Copilot Chat ์‘๋‹ต์€ ๋น„๊ฒฐ์ •์ ์ด๋ฏ€๋กœ ์—ฌ๊ธฐ์— ํ‘œ์‹œ๋œ ์‘๋‹ต๊ณผ ๋‹ค๋ฅธ ์‘๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import time

def sieve_of_eratosthenes(limit):
    sieve = [True] * (limit + 1)
    sieve[0] = sieve[1] = False
    for start in range(2, int(limit**0.5) + 1):
        if sieve[start]:
            for multiple in range(start*start, limit + 1, start):
                sieve[multiple] = False
    return [num for num, is_prime in enumerate(sieve) if is_prime]

def every_1000th_prime():
    limit = 105000  # Higher than needed to ensure 10,000 primes
    primes = sieve_of_eratosthenes(limit)
    return [primes[i] for i in range(999, 10000, 1000)]

if __name__ == "__main__":
    start_time = time.time()
    primes = every_1000th_prime()
    for prime in primes:
        print(prime)
    end_time = time.time()
    elapsed_time = end_time - start_time
    print(f"Time taken: {elapsed_time:.10f} seconds")

์ถ”๊ฐ€ ์ฐธ๊ณ  ์ž๋ฃŒ