Algorithms

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

thals0 2022. 7. 30. 14:23
728x90

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

 

4948번: λ² λ₯΄νŠΈλž‘ 곡쀀

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

www.acmicpc.net

 

처음 μ½”λ“œ:

while(1):
  a=int(input())
  if a ==0:
    break
  cnt=0
  for i in range(a+1,2*a+1):
    if i == 1:
      continue
    for j in range(2,int(i**0.5)+1):
      if i % j == 0:
        break
    else:
      cnt+=1
  print(cnt)
각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ 계속 μ†Œμˆ˜λ₯Ό κ³„μ‚°ν•˜λ‹ˆκΉŒ μ‹œκ°„ 초과 λ°œμƒ
 
 
μ •λ‹΅ μ½”λ“œ:
sosu =[]
for i in range(2,246913):
  cnt = 0 
  for j in range(2, int(i**0.5)+1):
    if i % j ==0:
      cnt += 1
      break
  if cnt == 0:
    sosu.append(i)
    
while(1):
  a = int(input())
  count = 0
  if a == 0:
    break
  for i in sosu:
    if a < i <= 2*a:
      count +=1
  print(count)

λ¬Έμ œμ—μ„œ μ£Όμ–΄μ§„ λ²”μœ„ λ‚΄μ—μ„œ μ†Œμˆ˜λ₯Ό λ¨Όμ € λͺ¨λ‘ κ΅¬ν•˜κ³  μ‹œμž‘ν•˜λŠ” λ°©λ²•μœΌλ‘œ μ‹œκ°„ 초과 ν•΄κ²°

728x90