[그림 01] Problem 007 문제


문제 이름 : 10001번째 소수

문제 내용 : 처음 6개의 소수가 2, 3, 5, 7, 11, 13이라고 할 때, 6번째 소수는 13이라는 걸 알 수 있습니다. 그렇다면 10001번째의 소수는 무엇입니까?


우리는 간단하게 다음과 같은 조건을 만족하는 소스를 작성해봅시다.

1. 소수를 구하는 함수

2. 소수 리스트의 길이가 10001이 될 때까지 반복

3. 마지막 소수를 출력


이제 소스를 작성해봅시다.





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
#Problem 007
#Python 3 version source
 
#By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
#What is the 10 001st prime number?
 
def getPrime():    #소수 구하는 함수
    primeList = [2#소수 첫번째 리스트
    num = 3          #두 번째 소수 비교하는 수
     
    while(len(primeList) < 10001):    #primeList가 10001번째보다 작으면 계속 반복
        for x in primeList:       
            if(num % x == 0):
                break
            elif(x == primeList[-1]):
                primeList.append(num)
                break
        num += 1
         
    return primeList
 
if __main__ = "__name__":
    Main_primeList = getPrime()
     
    print(Main_primeList[-1]) #마지막 소수 리스트의 숫자를 출력

getPrime 함수는 소수를 구하는 함수이고, 이 함수는 primeList의 길이가 10001번째가 아니면 계속 반복하여 구하는 구조입니다.

그리고 모두 구한 후, main에 있는 변수로 리턴해주고, 이 중 마지막 리스트를 출력합니다.


이제 저보다 잘하는 사람의 소스를 참고해봅시다.

두근두근...!!

1
2
3
#python 2 version source
import prime
print prime.prime(10000)

오... 신이시여... 이럴수가...

위의 소스는 prime이라는 모듈을 다운받아야 실행이 되는 것 같습니다.

저는 다운받는데 실패했습니다.

흑흑.... 그냥 저 위의 소스를 활용하렵니다.

+ Recent posts