BOJ/๐Ÿฅˆ

โ˜…Number Theory Upper-Intermediate I - 8 Solvedโ˜…

metamong 2023. 2. 28.

โ˜… 1850 ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ โ˜…

import math

A,B = map(int, input().split())

ans = ''.join(['1']*math.gcd(A,B))

print(ans)

 

๐Ÿ‘‘ 1์˜ ๊ฐœ์ˆ˜ A์™€ B์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋งŒํผ 1์ด ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ์„ฑ์งˆ / ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์ด๋ฅผ ์ฆ๋ช…ํ•ด๋ณด์ž

 

โ€ป 1์ด a๊ฐœ ์žˆ๋Š” ์ˆ˜์™€ 1์ด b๊ฐœ ์žˆ๋Š” ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” 1์ด gcd(a,b)๊ฐœ ์žˆ๋Š” ์ˆ˜ (a≥b)โ€ป

 

- ์ฆ๋ช… - 

→ 1์ด a๊ฐœ ์žˆ๋Š” ์ˆ˜๋ฅผ $S_a$, 1์ด b๊ฐœ ์žˆ๋Š” ์ˆ˜๋ฅผ $S_b$๋ผ๊ณ  ํ•˜๋ฉด

$$S_a = \underbrace{111 ... 111}$$

(1์ด a๊ฐœ)

$$S_b = \underbrace{111 ... 111}$$

(1์ด b๊ฐœ)

 

→ ์•„๋ž˜์™€ ๊ฐ™์ด 10์˜ ์ง€์ˆ˜์Šน์œผ๋กœ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค.

$$S_a = 10^{a-1} + 10^{a-2} ... + 10^0$$

$$S_b = 10^{b-1} + 10^{b-2} ... + 10^0$$

 

10^(n-1)๋กœ ๊ฐ„๋‹จํžˆ ๋‚˜ํƒ€๋‚ด์ž๋ฉด

$$S_a = \frac{10^a-1}{9}$$

$$S_b = \frac{10^b-1}{9}$$

 

→ 9๋กœ ๋™์‹œ์— ๋‚˜๋ˆ„์—ˆ์œผ๋ฏ€๋กœ, ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์˜ ์„ฑ์งˆ์— ์˜ํ•ด $S_a, S_b$์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” $10^a-1, 10^b-1$์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์— 9๋ฅผ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

→ ์ฆ‰, gcd($10^a-1$,$10^b-1$)์— ๊ด€ํ•ด ์‹์œผ๋กœ ํ’€์–ด์“ฐ๋ฉด (q >= 1, 0 <= r < b) (a=bq+r)

$$gcd(10^a-1,10^b-1)$$

$$=gcd(10^{qb+r}-10^r+10^r-1,10^b-1)$$

$$=gcd(10^r(10^{qb}-1)+10^r-1,10^b-1)$$

 

$gcd(A,B) = gcd(A-NB,B)$์— ์˜ํ•ด

$$=gcd(10^b-1,10^r-1)$$

$$(N = \frac{10^r(10^{ab}-1)}{10^b-1})$$

 

→ ๋”ฐ๋ผ์„œ, $gcd(10^a-1, 10^b-1) = gcd(10^b-1, 10^r-1)$

 

→ ์—ฐ์‡„์ ์œผ๋กœ r์ด 0์ด ๋  ๋•Œ, ์ฆ‰ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์— ์˜ํ•ด $gcd(10^a-1, 10^b-1) = 10^{gcd(a,b)}-1$

 

→ ๋”ฐ๋ผ์„œ, $S_a, S_b$์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” $\frac{10^{gcd(a,b)}-1}{9}$

 

๋“ฑ๋น„์ˆ˜์—ด ํ•ฉ ๊ณต์‹์— ์˜ํ•ด 

$10^{gcd(a,b)}-1 = (10-1)(10^{gcd(a,b)-1}+10^{gcd(a,b)-2}+...+1)$

 

→ $S_a, S_b$์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” ์ตœ์ข…์ ์œผ๋กœ

$$10^{gcd(a,b)-1}+10^{gcd(a,b)-2}+...+1$$

 

→ ์ด๋Š” 1์ด ์ด $gcd(a,b)$๊ฐœ ์žˆ๋Š” ์ˆ˜์ด๋‹ค. ์ฆ๋ช… ๋!


โ˜… 17087 ์ˆจ๋ฐ”๊ผญ์งˆ 6 โ˜…

import sys
input=sys.stdin.readline

def gcd(a,b):
    A,B=max(a,b),min(a,b)

    while B>=1:
        A,B=B,A%B
    return A
N,S=map(int,input().split())
l=[]
for x in input().split():
    l.append(abs(S-int(x)))
ans=l[0]
for x in l[1:]:
    ans=gcd(ans,x)
print(ans)

๐Ÿ‘‘ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ˆ˜๋“ค์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ

: D ๋ณดํญ๋งŒํผ ๋™์ƒ์„ ๋งŒ๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ๋™์ƒ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” D๊ฐ€ ๊ณต์•ฝ์ˆ˜. ๊ทผ๋ฐ D์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด๋Š” ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•จ

 

๐Ÿ‘‘ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•:

: ์•ž์—์„œ ์ฐจ๋ก€๋Œ€๋กœ ๋‘ ๊ฐœ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ ๋‹ค์Œ ์ˆ˜์™€์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ณ , ๋˜ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ ๋‹ค์Œ ์ˆ˜์™€์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด์„œ ์—ฐ์‡„์ ์œผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ 2๊ฐœ ์Œ๋ผ๋ฆฌ ๊ตฌํ•ด ๋‚˜๊ฐ€๋ฉด ๋จ!


โ˜… 22302 Factorial Factors โ˜…

 

import sys
input=sys.stdin.readline

sieve = [True]*(100_001)
sieve[0],sieve[1] = False, False

for x in range(2,int(len(sieve)**(1/2))+1):
    if sieve[x]:
        for y in range(x,len(sieve),x):
            sieve[y] = False
        sieve[x] = True

primes=[x for x in range(len(sieve)) if sieve[x]]

for _ in range(int(input())):
    N=int(input())
    ans=[]
    for prime in primes:
        if prime > N:
            break
        square=1
        while 1:
            share=int(N/(prime**square))
            if share == 0:
                break
            else:
                ans.extend([prime]*share)
            square+=1
    print(len(set(ans)),len(ans))

 

๐Ÿ‘‘ ์ž…๋ ฅ๋ฐ›์€ N์˜ N! ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ด๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฌธ์ œ. ์ œ์ผ ์ž‘์€ ์†Œ์ˆ˜๋ถ€ํ„ฐ ์†Œ์ˆ˜์˜ ์ œ๊ณฑ์ˆ˜๋ฅผ N์— ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 5!์˜ ์†Œ์ธ์ˆ˜๋ถ„ํ•ด๋Š” ๊ณง 1 x 2 x 3 x 4 x 5 ์ด๋ฏ€๋กœ ์†Œ์ˆ˜ 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ int(N/2) + int(N/2**2) + int(N/2**3)์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ˆ„์ . [prime]*share๋ฅผ list์— update. ๊ทธ ๋‹ค์Œ ์†Œ์ˆ˜ 3๋„ ๋งˆ์ฐฌ๊ฐ€์ง€.


โ˜… 9020 ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก โ˜…

๐Ÿ’๐Ÿป‍โ™‚๏ธ ๊ณจ๋“œ๋ฐ”ํ ์ˆ˜ = 2๋ณด๋‹ค ํฐ ๋ชจ๋“  ์ง์ˆ˜๋Š” ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’๐Ÿป‍โ™‚๏ธ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜ = ์ง์ˆ˜๋ฅผ ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜์„ ์ถœ๋ ฅํ•˜๋Š” ์œ ํ˜•! (๋‘ ์†Œ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ์ž‘์€ ์Œ)

import sys
input=sys.stdin.readline

def first_goldbach(n):
    arr = [True] * n 
    arr[0]=False
    end = int(n**(1/2))
    for i in range(2,end+1):
        if arr[i-1] == True:
            for k in range(i-1,n,i):
                arr[k] = False
            arr[i-1] = True
    
    for j in range(n//2,0,-1):
        if arr[j] == True == arr[(n-2-j)]:
                ans = j+1
                break

    return ans

for _ in range(int(input())):
    N=int(input())
    a=first_goldbach(N)
    print(min(a,N-a),max(a,N-a),sep=' ')

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ ์—ฌ๋Ÿฌ ์Œ์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๋‘ ์†Œ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์Œ๋ถ€ํ„ฐ ์ถœ๋ ฅํ•˜๋ฏ€๋กœ, ์ •์ˆ˜๋ก ์— ์˜ํ•ด ๋‘ ์ˆ˜ ์ค‘ ํ•œ ๊ฐœ์˜ ์ˆ˜๋Š” ์ „์ฒด ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์—,range(n//2,0,-1) ๋ฒ”์œ„๋ฅผ ๋‘์–ด ์ฐจ๋ก€๋Œ€๋กœ ๊ณ„์‚ฐ

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ ์†Œ์ˆ˜ ํŒ์ •๋ฒ•์€ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์‚ฌ์šฉ. ๋‘ ์ˆ˜์˜ array๊ฐ’์ด ๋ชจ๋‘ True๋ผ๋ฉด ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜ ์กฐ๊ฑด ์ถฉ์กฑ! ๋ฐ”๋กœ ์ถœ๋ ฅ

(์ถ”๊ฐ€ - ์„ฑ๋Šฅ์„ ๋” ๋†’์ผ๋ ค๋ฉด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์ฃผ์–ด์ง„ n ์ค‘ ์ตœ๋Œ“๊ฐ’๋งŒ ๊ณจ๋ผ ๋‹จ 1๊ฐœ์˜ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ํŒ์ •ํ•˜๋Š” ๊ฒŒ ๋” ๋น ๋ฆ„)


โ˜… 17103 ๊ณจ๋“œ๋ฐ”ํ ํŒŒํ‹ฐ์…˜ โ˜…

 

import sys
input=sys.stdin.readline

#sieve of eratosthenes (size 1_000_000)
sieve=[True]*1_000_001
sieve[0],sieve[1]=False,False

for i in range(2,1_000_001):
    if sieve[i] == True:
        for j in range(i,1_000_001,i):
            sieve[j] = False
        sieve[i] = True

for _ in range(int(input())):
    N = int(input())
    ans = 0
    for i in range(2,N//2+1):
        if sieve[i] == True and sieve[N-i] == True:
            ans += 1
    print(ans)

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ๋จผ์ € ์ตœ๋Œ“๊ฐ’ ๋ฐฑ๋งŒ๊นŒ์ง€์˜ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚œ ๋’ค(์‹œ๊ฐ„ ํšจ์œจ์„ ์œ„ํ•ด ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ํ•œ ๋ฒˆ๋งŒ ์ƒ์„ฑ), ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก์„ ๋งŒ์กฑํ•˜๋Š” ๋‘ ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ, N์˜ ์ ˆ๋ฐ˜๊นŒ์ง€๋งŒ ๋Œ๋ฉฐ sieve ์ฒด์˜ i์™€ N-i ๋‘ ์Œ์ด ๊ฐ์ž True๋กœ ๋‚˜์˜จ๋‹ค๋ฉด ํ•ฉ์œผ๋กœ ์นด์šดํŠธ


โ˜… 25632 ์†Œ์ˆ˜ ๋ถ€๋ฅด๊ธฐ ๊ฒŒ์ž„ โ˜…

import sys
input=sys.stdin.readline

sieve = [True]*(1001)
sieve[0],sieve[1] = False, False

for x in range(2,int(1001**(1/2))+1):
    if sieve[x]:
        for y in range(x,1001,x):
            sieve[y] = False
        sieve[x] = True
primes = [x for x in range(len(sieve)) if sieve[x]]

A,B=map(int,input().split())
C,D=map(int,input().split())

yt=[prime for prime in primes if A <= prime <= B]
yj=[prime for prime in primes if C <= prime <= D]

if len(yt)!=len(yj):
    if len(yt)>len(yj):
        print('yt')
    else:
        print('yj')
    sys.exit()

same = set(yt).intersection(set(yj))
if len(same)%2 == 1:
    print('yt')
else:
    print('yj')
    
#####

same = set(yt).intersection(set(yj))
turn = 1
while True:
    if turn == 1:
        if len(yt) == 0:
            print('yj')
            break
        if len(same) > 0:
            discard_elem = list(same)[0]
            same.discard(discard_elem)
            yt.remove(discard_elem)
            yj.remove(discard_elem)
        else:
            yt.pop()
        turn = 0
    else: #turn = 0
        if len(yj) == 0:
            print('yt')
            break
        if len(same) > 0:
            discard_elem = list(same)[0]
            same.discard(discard_elem)
            yt.remove(discard_elem)
            yj.remove(discard_elem)
        else:
            yj.pop()
        turn = 1

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ ์ง์ ‘ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์œผ๋กœ ๋Œ๋ฆฌ๊ฑฐ๋‚˜ / ๊ต์ง‘ํ•ฉ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ๊ฒŒ์ž„ ์ด๋ก  ํŒ์ •์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

โ‘  ์ผ๋‹จ ๊ฐ ๋ฒ”์œ„ ๋‚ด์˜ ๋‘๋ช… ๊ฐ๊ฐ์˜ ์†Œ์ˆ˜ list ๊ตฌํ•˜๊ธฐ

โ‘ก ๋” ๋งŽ์€ ์†Œ์ˆ˜๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ '์Šน'

โ‘ข ์„œ๋กœ ๊ฐ€์ง„ ์†Œ์ˆ˜๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ, ๊ต์ง‘ํ•ฉ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ๋จผ์ € ์ง„ํ–‰ํ•œ ์šฉํƒœ ์Šน๋ฆฌ / ํ™€์ˆ˜๋ผ๋ฉด ์ดํ›„์— ์ง„ํ–‰ํ•œ ์œ ์ง„ ์Šน๋ฆฌ

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


โ˜… 1747 ์†Œ์ˆ˜&ํŒฐ๋ฆฐ๋“œ๋กฌ โ˜…

def get_sieve(l):
    sieve = [True]*(l+1)
    sieve[0],sieve[1] = False, False

    for x in range(2,int(len(sieve)**(1/2))+1):
        if sieve[x]:
            for y in range(x,len(sieve),x):
                sieve[y] = False
            sieve[x] = True
    return sieve
sieve = get_sieve(1003001)
N=int(input())

for prime in range(len(sieve)):
    if str(prime) == str(prime)[::-1] and prime >= N and sieve[prime]:
        print(prime)
        break

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ ๋ฐฑ๋งŒ์ดˆ๊ณผ์˜ ์†Œ์ˆ˜ ์ค‘ ํŒฐ๋ฆฐ๋“œ๋กฌ ์ตœ์†Ÿ๊ฐ’์€ 1003001์ž„์„ ์•Œ๊ณ  1003001๊นŒ์ง€์˜ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ๋งŒ๋“  ๋‹ค์Œ BF๋กœ ๋Œ๋ ค ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ฉด ์ถœ๋ ฅํ•˜๊ณ  ๋


โ˜… 6588 ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก โ˜…

sieve = [True]*(1_000_001)
sieve[0],sieve[1] = False, False
for x in range(int(len(sieve)**(1/2))+1):
    if sieve[x]:
        for y in range(2*x,len(sieve),x):
            sieve[y] = False

import sys
input=sys.stdin.readline

while 1:
    n=int(input())
    if n == 0: break
    found=False
    for i in range(n-3,2,-2): #3~(n-3)
        if sieve[i] and sieve[n-i]:
            found=True
            print(f'{n} = {n-i} + {i}')
            break
    if not found:
        print("Goldbach's conjecture is wrong.")

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์“ฐ๋˜ ์‹œ๊ฐ„์ดˆ๊ณผ์— ์œ ์˜ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ. ์ผ๋‹จ √n๊นŒ์ง€๋งŒ(n์€ sieve ์ „์ฒด ํฌ๊ธฐ) ๋Œ๋ฆฌ๊ณ , ๋‚ด๋ถ€ for๋ฌธ์„ 2*x๋ถ€ํ„ฐ ๋Œ๋ฆฐ๋‹ค.

 

๐Ÿ’๐Ÿป‍โ™‚๏ธ for i in range(n-3,2,-2) ์ฆ‰ ๊ฐ€๋Šฅ ์†Œ์ˆ˜๋Š” 3 ~ (n-3)๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ n-3๋ถ€ํ„ฐ 3๊นŒ์ง€ -2์˜ step์œผ๋กœ ๋Œ๋ฆฐ๋‹ค. ์†Œ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ in ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ์—†์ด, ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด index๋ฅผ ํ™œ์šฉํ•ด if sieve[i] and sieve[n-i]์ธ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ ์†Œ์ˆ˜ ํŒ๋ณ„.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€