백준 문제풀이/수학

[백준] 1929 소수구하기 - python

peach_h 2022. 11. 15. 18:53

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

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

a, b = map(int,input().split())

for i in range(a,b+1):
    count=0
    if i > 1:
        for j in range(2, i):
            if i%j ==0:
                count+=1
        if count==0 :
           print(i)

어제 푼걸 활용해서 해봤는데, 값은 다 나오는데 시간초과가 걸렸다.

하나하나 나누기 X 루트를 활용해야함

 

 

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

a, b = map(int, input().split())

for i in range(a, b+1):
    if sosu(i):
        print(i)

만약 num이 17이면, 2부터 16까지 나누는게 아니라, 루트17까지만 나눠줘도 소수인지 판별이 된다.

이게 무슨 개념인지는 모르겠지만 그렇다고 한다.

이렇게 함수를 만들어서 풀면 해결완료 ~~