BOJ/๐Ÿฅˆ

โ˜…Number Theory Intermediate I - 17 Solvedโ˜…

metamong 2022. 12. 13.

โ˜… 9613 GCD ํ•ฉ โ˜…

 

import sys
input=sys.stdin.readline
from itertools import combinations

def gcd(a,b): #a<=b
    while a>0:
        a,b=b%a,a
    return b

for _ in range(int(input())):
    ans = 0
    pairs = list(combinations(list(map(int, input().split()))[1:], 2))
    for pair in pairs:
        ans += gcd(pair[0], pair[1])
    
    print(ans)

 

๐Ÿฆ™ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ GCD๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฌ๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

โ‘  math module ๋‚ด์žฅํ•จ์ˆ˜ ์‚ฌ์šฉ

โ‘ก ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์‚ฌ์šฉ (๋ณ„๋„ gcd ํ•จ์ˆ˜ ๋”ฐ๋กœ ๋งŒ๋“ค๊ธฐ / ์žฌ๊ท€)

โ‘ข ์ •์˜ - ๊ณต์•ฝ์ˆ˜ ์ค‘ ์ตœ๋Œ“๊ฐ’

 

โ€ป ์ •์ˆ˜๋ก ์˜ ์„ฑ์งˆ ์ค‘ ํ•˜๋‚˜ [์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•]์„ ์‚ฌ์šฉํ•ด GCD๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ •์˜๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋น ๋ฅด๋‹ค

 

๐Ÿฆ™ itertools์˜ combinations(๋˜๋Š” ๋‘ ๋ฒˆ for loop ๋Œ๋ ค๋„ ๋œ๋‹ค)๋กœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  pair ๊ตฌํ•œ ๋’ค, ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์ ์šฉํ•˜๋ฉด ๋!


โ˜… 10610 30 โ˜…

 

import sys
input=sys.stdin.readline

N = list(map(int, input().rstrip()))

if sum(N)%3 == 0 and 0 in N:
    N.sort(reverse=True)
    print(int(''.join(map(str,N)))) 

else:
    print('-1')

 

๐Ÿฆ™ 30์˜ ๋ฐฐ์ˆ˜ ํŒ์ •๋ฒ• → 10์˜ ๋ฐฐ์ˆ˜ (0์ด ์กด์žฌํ•˜๋Š” ์ง€ ํŒ๋ณ„) + 3์˜ ๋ฐฐ์ˆ˜ (3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 0)


โ˜… 6872 RSA Numbers โ˜…

 

def if_RSA(n):
    cnt=0
    end=int(n**(1/2))
    for i in range(1,end+1):
        if n%i==0:
            if i!=(n//i): cnt+=2
            else: cnt+=1
    if cnt==4:return True
    else:return False

a=int(input())
b=int(input())
ans=0
for n in range(a,b+1):
    if if_RSA(n):ans+=1
print(f'The number of RSA numbers between {a} and {b} is {ans}')

 

๐Ÿฆ™ ์•ฝ์ˆ˜ ํŒ์ •์€ ์ „์ฒด ์ˆ˜๊นŒ์ง€ ๋Œ๋ฆด ํ•„์š” ์—†๊ณ , ์ „์ฒด ์ˆ˜์˜ root ๋ฒ”์œ„๊นŒ์ง€๋งŒ ๋Œ๋ฆฌ๋ฉด ๋œ๋‹ค(์‹œ๊ฐ„๋ณต์žก๋„ O(N) → O(root(N)). ์ด ๋•Œ, ์ œ๊ณฑ์ˆ˜์ผ ๊ฒฝ์šฐ ์นด์šดํŒ…๋˜๋ฏ€๋กœ, ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋Š” 1๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ , ๋‚˜๋จธ์ง€ ์ˆ˜๋Š” 2๊ฐœ์”ฉ cnt ๋ณ€์ˆ˜ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๋ฉด ๋!


โ˜… 14650 ๊ฑท๋‹ค๋ณด๋‹ˆ ์‹ ์ฒœ์—ญ ์‚ผ (Small) โ˜…

 

N=int(input())
print(0 if N==1 else 2*3**(N-2))

 

๐Ÿฆ™ ์ •์ˆ˜๋ก ) 3์˜ ๋ฐฐ์ˆ˜๋Š” ๋ชจ๋“  ์ˆ˜์˜ ํ•ฉ์ด 3์˜ ๋ฐฐ์ˆ˜์ด๋‹ค

 

๐Ÿฆ™ dp๋ฅผ ์ ์šฉํ•˜๋ฉด, N์ž๋ฆฌ 3์˜ ๋ฐฐ์ˆ˜ ๊ฐœ์ˆ˜๋ฅผ a(n)์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด,

a(n) = a(n-1)*3 (n ≥ 3; a(1) = 0, a(2) = 2)

โ‘  a(n-1)์—์„œ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ 3์˜ ๋ฐฐ์ˆ˜๋“ค ์ค‘, 3์„ ๋งจ ์•ž๊ณผ ๋งจ ๋’ค์— ๋ถ™์ธ๋‹ค๋ฉด ์ •์ˆ˜๋ก  ์„ฑ์งˆ์— ์˜ํ•ด 3์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋œ๋‹ค.

ex) 121212๊ฐ€ ์žˆ์„ ๋•Œ, ๋งจ ์•ž์— 3์„ ๋ถ™์ธ 3121212 ๋˜๋Š” ๋งจ ๋’ค์— 3์„ ๋ถ™์ธ 1212123์€ ๋ชจ๋‘ 3์˜ ๋ฐฐ์ˆ˜

 

โ‘ก a(n-1)์—์„œ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ 3์˜ ๋ฐฐ์ˆ˜๋“ค ์ค‘, 0์„ ๋งจ ๋’ค์— ๋ถ™์ธ๋‹ค๋ฉด ์ •์ˆ˜๋ก  ์„ฑ์งˆ์— ์˜ํ•ด 3์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋œ๋‹ค.

ex) 121212๊ฐ€ ์žˆ์„ ๋•Œ, ๋งจ ๋’ค์— 0์„ ๋ถ™์ธ 1212120๋„ 3์˜ ๋ฐฐ์ˆ˜

 

∴ ์ฆ‰, ์ด๋ฏธ ์•ž์—์„œ ๋งŒ๋“ค์–ด์ง„ ์ˆ˜ 121212์—์„œ ์ด 3๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋กœ 3์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ x3์„ ํ•ด์ค€๋‹ค!

∴ 3๋งŒ ๊ณ„์† ๊ณฑํ•ด์ง€๋ฏ€๋กœ ๋“ฑ๋น„์ˆ˜์—ด๋กœ ์ ํ™”์‹์ด ์•„๋‹Œ, ๋“ฑ๋น„์ˆ˜์—ด ๊ณต์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

a(n) = 2 * 3^(n-1) (n ≥ 3)


โ˜… 14651 ๊ฑท๋‹ค๋ณด๋‹ˆ ์‹ ์ฒœ์—ญ ์‚ผ (Large) โ˜…

N=int(input())
print(0 if N==1 else ((2*3**(N-2))%(1_000_000_009)))

โ˜… 1735 ๋ถ„์ˆ˜ ํ•ฉ โ˜…

 

a1,b1=map(int,input().split())
a2,b2=map(int,input().split())

A,B=a1*b2+a2*b1,b1*b2

def gcd(a,b): #a<=b
    while a>0:
        a,b=b%a,a
    return b
k=gcd(A,B)
print(A//k,B//k)

 

๐Ÿฆ™ ๋‘ ๋ถ„์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ณ , ๋ถ„์ž์™€ ๋ถ„๋ชจ ๊ฐ๊ฐ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ์ธ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ถ„์ˆ˜๊ฐ€ ์ตœ์ข… ๋‹ต. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ, ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์‚ฌ์šฉ: ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• - ํฐ ์ˆ˜๋ฅผ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€์™€ ์ž‘์€ ์ˆ˜๋ฅผ ๊ณ„์† ๋ฐ˜๋ณต - ์ตœ์ข…์ ์œผ๋กœ ์ž‘์€ ์ˆ˜๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต


โ˜… 13241 ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ โ˜…

 

A,B=map(int,input().split())
a,b=max(A,B),min(A,B)
while b!=0:
    if a%b==0:
        a=b
        break
    a,b=b,a%b
print(A*B//a)

 

๐Ÿฆ™ A*B = G*L์ด๋ผ๋Š” ๊ณต์‹, ์ฆ‰ ๋‘ ์ˆ˜์˜ ๊ณฑ์€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์˜ ๊ณฑ์ด๋ผ๋Š” ๊ฒƒ๋งŒ ์ •ํ™•ํžˆ ์•Œ๋ฉด, ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์œผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ๋ฐ”๋กœ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค! ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ํฐ ์ˆ˜์—์„œ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ณ  ์ž‘์€ ์ˆ˜๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต, ์ด ๋•Œ ๋„์ค‘์— b๊ฐ€ a์— ๋‚˜๋ˆ„์–ด์ง€๋ฉด b ์ž์ฒด๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋˜๋ฏ€๋กœ ๋ฐ”๋กœ break ํƒˆ์ถœํ•ด ์ตœ๋Œ€ํ•œ ์‹œ๊ฐ„ ๋‹จ์ถ•


โ˜… 13909 ์ฐฝ๋ฌธ ๋‹ซ๊ธฐ โ˜…

 

๐Ÿฆ™ ์ฐฝ๋ฌธ์„ ์—ด๊ณ  ๋‹ซ๋Š” ํšŸ์ˆ˜๊ฐ€ ํ™€์ˆ˜ ๋ฒˆ์ด์–ด์•ผ ์ตœ์ข…์ ์œผ๋กœ ์—ด๋ฆฐ๋‹ค. ์—ด๊ณ  ๋‹ซ๋Š” ํšŸ์ˆ˜๋Š” ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋œปํ•˜๋ฏ€๋กœ, ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜ ๊ฐœ๋ผ๋Š” ๊ฑด, ๊ณง ์ œ๊ณฑ์ˆ˜์ž„์„ ๋œปํ•œ๋‹ค. n์ดํ•˜์˜ ์ œ๊ณฑ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋!


โ˜… 1929 ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ โ˜…

 

M,N=map(int,input().split())

#์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด
l=[True]*N #๋จผ์ € True
end=int(N**0.5) #์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ iteration

#l=[1,2,3,~,N]์ด๊ณ  [T,T,~,T] array
#l's index [0,1,2,~N-1]

for i in range(2,end+1): #i์ž์ฒด๊ฐ€ ์†Œ์ˆ˜ํŒ์ •๋Œ€์ƒ number - i's iteration
    if l[i-1]==True: #index๋Š” i-1
        for k in range(i-1,N,i):l[k] = False #i์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋Š” ๋ชจ๋“  number False
        l[i-1]=True #๋‚˜ ์ž์‹ ์€ True๋กœ

ans=[i+1 for i in range(1,N) if l[i] == True] #l's [2,3,~,N]์—์„œ True ๊ณ ๋ฅด๊ธฐ

print(*[i for i in ans if i>=M],sep='\n') #์ด ์ค‘ M์ด์ƒ์ธ๊ฒƒ๋งŒ ๊ณ ๋ฅด๊ธฐ

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ์†Œ์ˆ˜ ํŒ๋ณ„๋ฒ•์„ ๋‹ค์‹œ ์š”์•ฝํ•˜๋ฉด,

โ‘  2๋ถ€ํ„ฐ (์ž๊ธฐ์ž์‹ -1)๊นŒ์ง€ ๋ชจ๋‘ ์ž๊ธฐ์ž์‹ ์—์„œ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ์•„๋‹ˆ๋‹ค → ์†Œ์ˆ˜์˜ ์ •์˜๋ฅผ ์ด์šฉ O(N)

โ‘ก ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 2์ด๋‹ค → O(N)

โ‘ข ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 2์ด๋‹ค - ๊ฒ€์‚ฌ๋ฒ”์œ„ N์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€ → O(root(N))

โ‘ฃ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 2์ด๋‹ค - ๊ฒ€์‚ฌ๋ฒ”์œ„ N/2๊นŒ์ง€ → O(N)

โ‘ค ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด  O(Nlog(logN)))

โ‘ฅ 2์™€ 3 ์ œ์™ธ ์†Œ์ˆ˜๋Š” 6์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1 ๋˜๋Š” 5

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ์œ„ ๋ฌธ์ œ๋ฅผ ๋งž์„๋ ค๋ฉด โ‘ค ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

โ‘  ์ด N๊ฐœ์˜ True๊ฐ’์ด ์ ํ˜€ ์žˆ๋Š” array ์ƒ์„ฑ

โ‘ก True๋ผ๊ณ  ์ ํžŒ ์›์†Œ๋ถ€ํ„ฐ(1 ์ œ์™ธ) N๊นŒ์ง€ ํ•ด๋‹น ์›์†Œ์˜ ๋ฐฐ์ˆ˜๋“ค ๋ชจ๋‘ False๋กœ ๋ฐ”๊ฟˆ

(๋‹จ, ์ž๊ธฐ ์ž์‹ ์€ ๋‹ค์‹œ True๋กœ ๋ฐ”๊ฟˆ)

โ€ป ์ „์ฒด N๊นŒ์ง€ ๋Œ ํ•„์š” ์—†๊ณ  root(N)์„ ๋‚ด๋ฆผํ•œ ์ž์—ฐ์ˆ˜๊นŒ์ง€ ๋Œ๋ฉด ๋จ

โ‘ข 1 ์ œ์™ธ True๋ผ๊ณ  ์ ํžŒ ๋ชจ๋“  ์›์†Œ๋“ค์ด N์ดํ•˜์˜ ์†Œ์ˆ˜๋“ค

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ์œ„ ์ฝ”๋“œ ํ’€์ด

โ‘  ์ด N๊ฐœ์˜ True๊ฐ€ ๋‹ด๊ธด list + ํƒ์ƒ‰ ๋ end๋Š” N์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€

โ‘ก i๋Š” ํƒ์ƒ‰ ์ˆ˜๋กœ, 2๋ถ€ํ„ฐ end๊นŒ์ง€ for๋ฌธ ์„ค์ •

โ‘ข index๋Š” i-1๋กœ, l[i-1] ๊ฐ’์ด True๋ผ๋ฉด, ํ•ด๋‹น ์œ„์น˜๋ถ€ํ„ฐ index ๊ธฐ์ค€ N-1๊นŒ์ง€ (์ฆ‰, ์ˆ˜๋กœ๋Š” i๋ถ€ํ„ฐ N๊นŒ์ง€) i์”ฉ ์ ํ”„ํ•˜๋ฉฐ, ์ ํ”„๋˜๋Š” ๊ณณ์€ i์˜ ๋ฐฐ์ˆ˜์ด๋ฏ€๋กœ False ์„ค์ •

โ‘ฃ ์—ฌ๊ธฐ์„œ ์‹œ์ž‘์  ์ž์ฒด๋Š” ๋‹ค์‹œ True๋กœ ์„ค์ •

โ‘ค ์™„๋ฃŒ! True์ธ ๊ฒƒ๋งŒ ๋นผ์„œ ๋ณ„๋„ list ์„ค์ •ํ•˜๊ณ  M์ด์ƒ์ธ ๊ฒƒ๋งŒ ๊ณจ๋ผ์„œ ์ถœ๋ ฅ!


โ˜… 2960 ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด โ˜…

 

N,K=map(int,input().split())
l=[True]*N

s=0
y=0
for i in range(2,N+1):
    if l[i-1] == True:
        for k in range(i-1,N,i):
            if l[k]==True:
                l[k]=False
                s+=1
            if s==K:
                y=1
                print(k+1)
                break
    if y==1: break

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ False๊ฐ€ ๋˜๋Š”, ์›ํ•˜๋Š” ์ˆœ์„œ์— ๋งž๋Š” ์ง€์›Œ์ง€๋Š” ์ˆ˜๋ฅผ ์ฐพ์•„ ์ถœ๋ ฅํ•˜๋ฉด ๋! + greedyํ•˜๊ฒŒ, ์›ํ•˜๋Š” K๋ฒˆ์งธ ์ˆ˜๋ฅผ ์ฐพ์•˜์œผ๋ฉด ๋‚ด๋ถ€ for๋ฌธ break + flag ๋ณ€์ˆ˜๋กœ ๋ฐ”๊นฅ for๋ฌธ break ์„ค์ •


โ˜… 9842 Prime โ˜…

 

n=int(input())
N=110000
#Sieve of Eratosthenes (size of N)
arr=[True]*N
arr[0]=False
for i in range(2,N+1):
    if arr[i-1]==True:
        for j in range(i-1,N,i):arr[j]=False
        arr[i-1]=True
primes_arr=[i+1 for i in range(1,N) if arr[i]==True]
print(primes_arr[n-1])

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ์ตœ๋Œ€ 10000๊ฐœ์˜ ์†Œ์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ๋ฒ”์œ„๋Š” ์ž์—ฐ์ˆ˜ 104729๊นŒ์ง€๋ผ๊ณ  ํ•œ๋‹ค! ใ…Žใ…Ž


โ˜… 6219 ์†Œ์ˆ˜์˜ ์ž๊ฒฉ โ˜…

 

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

arr=[True]*B
arr[0]=False
end=int(B**(1/2))
cnt=0

for i in range(2,end+1):
    if arr[i-1]==True:
        for j in range(i-1,B,i):arr[j]=False
        arr[i-1]=True

for n in range(A-1,B):
    if arr[n] == True and str(D) in str(n+1): cnt+=1
print(cnt)

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ํฌ๊ธฐ B์— ํ•ด๋‹นํ•˜๋Š” ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ๋งŒ๋“  ๋’ค, ์ฒด์˜ index+1์ด ๊ณง ํŒ์ •๋Œ€์ƒ์ธ ์ˆซ์ž๊ฐ€ ๋˜๊ณ , ์ฒด์˜ ๋‚ด์šฉ์ด T/F์ด๋ฏ€๋กœ ์ด๋ฅผ ์ ์ ˆํžˆ range()๋ฌธ์œผ๋กœ ํŒ๋ณ„ํ•˜๋ฉด ๋!


โ˜… 4948 ๋ฒ ๋ฅดํŠธ๋ž‘ ๊ณต์ค€ โ˜…

 

import sys
input=sys.stdin.readline

def Sieve_of_Eratosthenes(N):
    arr=[True]*(N+1)
    arr[0],arr[1]=False,False
    end=int(N**(1/2))

    for i in range(2,end+1):
        if arr[i] == True:
            for j in range(i,N+1,i):
                arr[j] = False
            arr[i] = True
    return arr


while True:
    N = int(input())
    if N == 0: break
    sieve = Sieve_of_Eratosthenes(2*N)
    print(sum(sieve)-sum(sieve[:N+1]))

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ 2n๊นŒ์ง€์˜ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ๋งŒ๋“ค๊ณ , n๊นŒ์ง€์˜ ๋ฒ”์œ„ True ๊ฐœ์ˆ˜ ๋นผ๋ฉด ๋!


โ˜… 4134 ๋‹ค์Œ ์†Œ์ˆ˜ โ˜…

 

import sys
input=sys.stdin.readline
N=int(input())

def isPrime(n):
    end=int(n**(1/2))
    for i in range(2,end+1):
        if n%i==0:
            return False
    return True

for _ in range(N):
    x = int(input())
    if x <= 1: print(2)
    else:
        while True:
            if isPrime(x):
                print(x)
                break
            x+=1

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ์†Œ์ˆ˜ ํŒ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜ โ‘ข ($\sqrt{N}$) ์‚ฌ์šฉ


โ˜… 24039 2021์€ ๋ฌด์—‡์ด ํŠน๋ณ„ํ• ๊นŒ? โ˜…

 

import sys

sieve=[True]*(10_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=[]
for x in range(len(sieve)):
    if sieve[x]:
        primes.append(x)

N=int(input())
x=N
while 1:
    x+=1
    for y in range(2,int(x**(1/2))+1):
        if x%y==0 and sieve[y]:
            k=primes.index(y)
            if x==(y*primes[k+1]):
                print(x)
                sys.exit()

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ํ™œ์šฉํ•ด์„œ ์—ฐ์†ํ•œ ์†Œ์ˆ˜์˜ ๊ณฑ ํŒ๋ณ„ ํ•œ๋ฒˆ์— ์‰ฝ๊ฒŒ!


โ˜… 1476 ๋‚ ์งœ ๊ณ„์‚ฐ โ˜…

 

E,S,M=map(int,input().split())

if E == 15: E = 0
if S == 28: S = 0
if M == 19: M = 0

share=-1
while True:
    share+=1
    N=share*15+E
    if N%28==S and N%19==M and N > 0:
        print(N)
        break

 

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ 15, 28, 19๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ E, S, M์ธ N์„ ์ถœ๋ ฅ(๋‹จ E, S, M์ด 15, 28, 19์ผ ๋•Œ๋Š” 0์œผ๋กœ ์„ค์ •)


โ˜… 2485 ๊ฐ€๋กœ์ˆ˜ โ˜…

import sys,math
input=sys.stdin.readline

N=int(input())
ts=sorted([int(input()) for _ in range(N)])
Is=[ts[i]-ts[i-1] for i in range(1,N)]
cur=Is[0]
for interval in Is[1:]: cur = math.gcd(cur,interval)
print(((ts[-1]-ts[0])//cur+1)-N)

๐Ÿ‘ณ๐Ÿป‍โ™€๏ธ ๊ฐ€๋กœ์ˆ˜๋“ค ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋งŒํผ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ฐ€๋กœ์ˆ˜๋ฅผ ์‹ฌ์–ด์•ผ ๊ฐ€๋กœ์ˆ˜ ๊ฐ„๊ฒฉ์ด ๋ชจ๋‘ ๋™์ผ. ์—ฌ๋Ÿฌ ๊ณต์•ฝ์ˆ˜ ์ค‘ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์˜ ๊ฐ„๊ฒฉ์ด ๊ณง ์‹ฌ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋กœ์ˆ˜๋ฅผ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ์‹ฌ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€