__Python/__Algorithm

[Python] λ°±μ€€ - 4948 λ² λ₯΄νŠΈλž‘ 곡쀀

KL_ 2022. 1. 7. 17:35

 

  λ¬Έμ œ

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

 

πŸ”Ή λ¬Έμ œ

λ² λ₯΄νŠΈλž‘ 곡쀀은 μž„μ˜μ˜ μžμ—°μˆ˜ n에 λŒ€ν•˜μ—¬, n보닀 크고, 2n보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜λŠ” 적어도 ν•˜λ‚˜ μ‘΄μž¬ν•œλ‹€λŠ” λ‚΄μš©μ„ λ‹΄κ³  μžˆλ‹€.

이 λͺ…μ œλŠ” μ‘°μ œν”„ λ² λ₯΄νŠΈλž‘μ΄ 1845년에 μΆ”μΈ‘ν–ˆκ³ , νŒŒν”„λˆ„ν‹° 체비쇼프가 1850년에 증λͺ…ν–ˆλ‹€.

예λ₯Ό λ“€μ–΄, 10보닀 크고, 20보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜λŠ” 4κ°œκ°€ μžˆλ‹€. (11, 13, 17, 19) 또, 14보닀 크고, 28보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜λŠ” 3κ°œκ°€ μžˆλ‹€. (17,19, 23)

μžμ—°μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, n보닀 크고, 2n보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜μ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 

 

πŸ”Ή μž…λ ₯

μž…λ ₯은 μ—¬λŸ¬ 개의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ 이루어져 μžˆλ‹€. 각 μΌ€μ΄μŠ€λŠ” n을 ν¬ν•¨ν•˜λŠ” ν•œ μ€„λ‘œ 이루어져 μžˆλ‹€.

μž…λ ₯의 λ§ˆμ§€λ§‰μ—λŠ” 0이 μ£Όμ–΄μ§„λ‹€.

 

πŸ”Ή μΆœλ ₯

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄μ„œ, n보닀 크고, 2n보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 

  ν’€μ΄ 방법

 

πŸ”Ή μˆ˜ν•™

πŸ”Ή μ†Œμˆ˜ νŒμ •

 

  κ΅¬ν˜„ μ½”λ“œ

import sys

def sosu(n):
    import math
    for i in range(2,int(math.sqrt(n))+1):
        if n % i == 0:
            return False
    return True

inputs = []
while True:
    n = int(sys.stdin.readline())
    if n==0:
        break
    inputs.append(n)
sosu_chk = [0 for _ in range(2*max(inputs)+1)]
for i in range(1,2*max(inputs)+1):
    if sosu(i):
        sosu_chk[i] = 1
for num in inputs:
    print(sum(sosu_chk[num+1:2*num+1]))

 

  μ‹€ν–‰ κ²°κ³Ό

 

  πŸ’‘

 

 

 

 

 

 

728x90