๋ด ํฌ์คํ
: [Python] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 2581 - ์์
์ ์ ์์์ ๋ํด ๋ค๋ฃฌ ๋ฌธ์ ๊ฐ ์๋๋ฐ ์ด๋ ๊ฒ ๊ตฌํํ๋ค๊ฐ ์๊ฐ์ด๊ณผ...๋ผ๋ ์๋ชจ๋ฅผ ๊ฒช๊ฒ๋จ๐ญ
๐๐ป๋น๊ต๋ฒ์๋ฅผ ์ขํ์ผํ๋ค!
ํด๋น ์(num)๋ฅผ '2๋ถํฐ num์ ์ ๊ณฑ๊ทผ'๋งํผ๋ง ๋๋ ๋ณด๋ฉด์ ์์์ธ์ง ํ๋ณํด๋ณด์
(num**0.5๊น์ง๋ง ๋น๊ตํด๋ ์์์ธ์ง ์๋์ง๋ ํ๋ณ ๊ฐ๋ฅ๊ธฐ ๋๋ฌธ์!)
ํ์ง๋ง, ์ ๊ณฑ๊ทผ์ ์ด์ฉํด๋ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋คโ
๐๐ป๋ฌธ์ ์ N,M์ ๋ฒ์๊ฐ (1 โค M โค N โค 1,000,000)์ด๋ค
๋ง์ฝ 2์คfor๋ฌธ์ผ๋ก ๊ตฌํํ๋ค๋ฉด โ for๋ฌธ 2๊ฐ๋ก ๋๋ ์ฃผ์
for:
for:
print() #2์คfor๋ฌธ์ ๊ฑฐ์ณ์ ํ๋์ฉ ์ถ๋ ฅํ๋ฏ๋ก
#O(๋ฐฑ๋ง*๋ฐฑ๋ง) = O(๋ฐฑ๋ง^2)์ด ๋์ด๋ฒ๋ฆผ ใ
ใ
โ (ํด๊ฒฐ๋ฐฉ๋ฒ : ํจ์๋ฅผ ์ฐ๋ฉด ๊ฐ๋จํ ํด๊ฒฐ)
def prime():
for: #1์คfor๋ฌธ์ผ๋ก ์ผ๋ถ ํด๊ฒฐํ๊ณ
return
for: #ํจ์ ๋ฐ์์ 1์คfor๋ฌธ์ผ๋ก prime()์ ํธ์ถํ๋ ๋ฐฉ์์ด๋ฏ๋ก
prime() #O(๋ฐฑ๋ง+๋ฐฑ๋ง) = O(๋ฐฑ๋ง)์ด ๋๋ค!!!
def sosu(num)
์ ์ด์ฉํ์ฌ num์ด ์์๋ฉด true
, ์์๊ฐ ์๋๋ฉด false
๋ฅผ return
ํ๋ ํจ์๋ฅผ ๋ง๋ค์import sys
m,n = map(int, sys.stdin.readline().split())
def sosu(num):
if num == 1: return False
else:
for i in range(2, int(num**0.5)+1): #์ ๊ณฑ๊ทผ์ผ๋ก ๋น๊ต
if num % i == 0:
return False
return True
for i in range(m, n+1):
if sosu(i):
print(i)
import sys
m,n = map(int, sys.stdin.readline().split())
def sosu(num):
if num == 1: return False #1์ด๋ฉด ์์๊ฐ ์๋๋ฏ๋ก False
else:
#i๋ฅผ 2๋ถํฐ โปnum์ ์ ๊ณฑ๊ทผ+1(์ด์ ๋ ์๋ ์ค๋ช
)์ผ๋ก ์ง์
for i in range(2, int(num**0.5)+1):
#i๋ก ๋๋์ด ๋จ์ด์ง๋ฉด False
if num % i == 0:
return False
#์์์ด๋ฉด True
return True
ํ์ด๋ ์๋๋ธ๋ก๊ทธ ์ฐธ๊ณ ํ์์!
https://imdona.tistory.com/m/25
โปi๋ฒ์๋ฅผ num์ ์ ๊ณฑ๊ทผ๊น์ง ํ๋ ์ด์ ?
์ ์ฒด์ผ์ด์ค๋ฅผ ๊ฒ์ฌํ๋ฉด ์์์ ์ธ๊ธํ ๊ฒ๊ณผ ๊ฐ์ด "์๊ฐ์ด๊ณผ"๊ฐ ๋ฐ์ํ๋ค
(์๋ฌด๋๋ ๋ฌธ์ ์์ 1,000,000(๋ฐฑ๋ง)๊ฒฝ์ฐ์ ์์ธ๋ฐ,
for๋ฌธ์ ํตํ๋ฉด ๋ฐฑ๋ง*๋ฐฑ๋ง์ด ๋๋ฏ๋ก ๋ฌธ์ ๊ฐ ๋ ๊ฒ ๊ฐ๊ธดํ์)
๐๐ป์ ๊ณฑ๊ทผ๊น์ง๋ง ๊ณ์ฐํ๋๋ผ๋ ์์์ธ์ง ์๋์ง๋ ํ๋ณ์ด ๊ฐ๋ฅํ๋ค.
โปint(num**0.5)์ด ์๋๋ผ int(num**0.5)+1?
int(num**0.5)์ผ๋ก ์งํํ ๊ฒฝ์ฐ, (num**0.5)๊ฐ์ด n.n ์ฆ, ์์์ผ ๋ ์์์ ์๋ซ์๋ฆฌ๋ฅผ ์ ์ญํด๋ฒ๋ฆฌ๋ฏ๋ก
ํ๊ฐ์ง ์ผ์ด์ค๋ฅผ ์์ ๋ฐฐ์ ํด๋ฒ๋ฆฌ๋ ์ํฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ int(num**0.5)+1๋ก ์งํ!
for i in range(m, n+1):
if sosu(i):
print(i)
โป์กฐ๊ฑด๋ฌธ(if)๋ true์ผ๋๋ง ๋์ํ๋๋ฐ sosuํจ์ return๊ฐ์ด true/false์ด๋ฏ๋ก
์์์ผ๋๋ง(treu) print๋ฌธ์ ํตํด ์ถ๋ ฅํด์ค๋ค
โป์ด๊ธฐ ์๊ณ ๋ฆฌ์ฆ
๋ด ํฌ์คํ
: [Python] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 2581 - ์์
์ ์ ํ ๋ฒ ๋ค๋ค์ผ๋ฏ๋ก ํจ์ค (๋๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ๋ง์)
import sys
input = sys.stdin.readline
m,n = map(int,input().split())
for i in range(m,n+1):
err = 0
for j in range(2, int(i**0.5)+1):
if i > 1:
if i%j == 0:
err += 1
if err == 0:
print(i)
์๊ณ ๋ฆฌ์ฆ ๋ง์ํ(๋ง๋๋ฐ ์ ํ๋ฆผ?)๋จ๊ณ์์ ํํ ํ๋ ์ค์๋ผ๊ณ ํ๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ณ์์ ๋ฒ์(1 โค M โค N โค 1,000,000)์ ์ฃผ์ํ์!!
์ ์ค๋ฅ์ฝ๋๋ O(๋ฐฑ๋ง*๋ฐฑ๋ง) = O(๋ฐฑ๋ง^2)์ด๋ฏ๋ก ๋น์ฐํ ์๊ฐ์ด๊ณผ ๋ ๊ฒ์ด๋ค๐คฆ๐ปโโ๏ธ
True
์ผ๋๋ง ๋์ํ๋ค (ํจ์๋ ๋์
๋๋ฆฌ ๊ตฌํ์ ์ฐธ๊ณ )'๋ฐฑ๋ง*๋ฐฑ๋ง'์ ๋ฑ๋ด๋ ์ค๋ต๊ฐ์์.... ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ ์ฐพ์๋ณด๋ ์์ผ๋ฅผ ๊ธฐ๋ฅด์...