[Python][PrimeNumber]소수구하기

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 1번) 기본 아이디어: N보다 작은 수로 나누어본다.
# def getPrime1(num):
#     result = 'true'
#     for i in range(2,num):
#         if num % i == 0:
#             result = 'false'
#             break
#     return result
# st = 1
# ed = 10**6
# prime = []
# for i in range(st+1, ed+1):
#     if getPrime1(i) == 'true':
#         prime.append(i)
# print(' '.join(str(e) for e in prime))

# 2번) 에라토스테네스의 체 기본. N을 2부터 sqrt(N)까지 나누어본다.
# def getPrime2(num):
#     result = 'true'
#     for i in range(2,int(num**0.5)+1):
#         if num % i == 0:
#             result = 'false'
#             break
#     return result
# st = 1
# ed = 10**6
# prime = []
# for i in range(st+1, ed+1):
#     if getPrime2(i) == 'true':
#         prime.append(i)
# print(' '.join(str(e) for e in prime))

# 3번) 에라토스테네스의 체: 배수 소거법. 출처:https://wikidocs.net/21638
n=10 ** 6
a = [False,False] + [True]*(n-1) # 0 1 2 3 ... n
prime=[]

for i in range(2,n+1):
    if a[i]:
        prime.append(i)
        for j in range(2*i, n+1, i): # 배수 i씩 증가하여 배수들은 False로 표시한다.
            a[j] = False
print(' '.join(str(e) for e in prime))

댓글

이 블로그의 인기 게시물

[python]섬의 둘레구하기

백트래킹으로 부분집합구하기(Get Powerset usiing Backtracking)

[패턴매칭][Python]보이어 무어 알고리즘