[백준 파이썬 1929번]소수 구하기★에라토스테네스의 체★VER3.0
2023. 4. 11. 21:39
728x90
반응형

VERSION 3.0
import sys
import math
M,N = list(map(int,sys.stdin.readline().split()))
a = [True for i in range(N+1)]
a[0],a[1] = False , False
for i in range(2, int(math.sqrt(N)+1)):
j=2
if a[i]== True:
while True:
if i*j> len(a)-1:
break
if a[i*j] == True:
a[i*j]= False
j+=1
for i in range(M,N+1):
if a[i] == True:
print(i)
==> True 일때 체크하기!!!
VERSION 2.0
import sys
import math
A = list(map(int, sys.stdin.readline().split()))
#print("A : {}".format(A))
def is_prime_number(n):
array = []
for i in range(n+1):
array.append(True)
#print("array_1 : {}".format(array))
array[0] , array[1] = False, False
for j in range(2 , int(math.sqrt(n))+1):
#A[1] = 16
#range(2,5)
if array[j] == True:
k =2
while (j*k <= n):
#2*2 < 16
#array[4] =False
#2*3 < 16
#array[6] =False
#.... array[16] =False
#array[3] = True
#array[6] =False
#array[9] =False
#array[12] =False
#array[15] = False
if array[j*k] == True:
array[j *k] = False
k+=1
return array
#print("array_2 : {}".format(array))
res = []
res_array = is_prime_number(A[1])
for i in range(A[0] , A[1]+1):
if res_array[i] == True:
res.append(i)
# print("res : {}".format(res))
for j in res:
print(j)
VERSION 1.0
import math
import sys
# 소수 판별 함수(에라토스테네스의 체)
def is_prime_number(m, n):
# 2부터 n까지의 모든 수에 대하여 소수 판별
array=[]
for i in range(n+1):
array.append(True)
array[1] , array[0] = False
# 처음엔 모든 수가 소수(True)인 것으로 초기화(0과 1은 제외)
# 에라토스테네스의 체
for i in range(2, int(math.sqrt(n)) + 1): #2부터 n의 제곱근까지의 모든 수를 확인하며 ==> 루트 26 ==> 5.xxx ==int(5.xxxx) ==> 5 +1 = 6
if array[i] == True: # i가 소수인 경우(남은 수인 경우)
# i를 제외한 i의 모든 배수를 지우기
j = 2
while i * j <= n:
array[i * j] = False
j += 1
#2*2 < 13: 2*2<5
#array[4] = False array[4] =False
#j+=1 ==> j=3 j=3
#2*3 < 13:
#array[6] =False
#j+=1 ==> j=4
#2*4 < 13:
#array[8] = False
#2*5 < 10:
#array[10] = False
#j+=1 ==> j=5
#2*6 < 12:
#array[12] = False
#j+=1 ==> j=6
#2*7 < 14:
#array[14] = False
#j+=1 ==> j=7
#array
array2=[]
for i in range(m, len(array)):
if array[i] == True:
array2.append(i)
return array2
A = list(map(int, sys.stdin.readline().split()))
for i in is_prime_number(A[0],A[1]):
print(i)728x90
반응형
'Python(백준) > 약수,배수와 소수 2' 카테고리의 다른 글
| [백준 파이썬 4948번]베르트랑 공준★에라토스테네스의 체★ver3.0★함수로 정의★list(filter(lambda x : list[x] == True , range(len(list)))==>리스트의 원하는 인덱스값 출력 (1) | 2023.04.12 |
|---|---|
| [백준 파이썬 2485번]가로수★gcd★float('inf') (0) | 2023.04.11 |
| [백준 파이썬 1735번]분수합★gcd★ (1) | 2023.04.11 |
| [백준 파이썬 1934번]최소공배수★gcd★VER2.0 (0) | 2023.04.11 |