2013년 7월 7일 망고식스에서
'My Life > version 2013' 카테고리의 다른 글
초콜렛 선물 (0) | 2013.08.01 |
---|---|
탁스 웨딩 (0) | 2013.06.22 |
휴식 (0) | 2013.05.13 |
시원한 팥빙수~ (0) | 2013.07.08 |
---|---|
휴식 (0) | 2013.05.13 |
Galaxy note 8.0 구매 (0) | 2013.05.08 |
import sys
import time
def Factorial(N):
checkSize = 5000
endN = N / checkSize
facResult = 1
for fi in range(1, endN + 1):
facResult = facResult * reduce(lambda x, y : x * y, range((fi-1)*checkSize+1,fi * checkSize+1))
if ( (endN * checkSize + 1) != (N+1) ):
facResult = facResult * reduce(lambda x, y : x * y, range(endN * checkSize + 1, N+1))
return facResult
number = 100000
startTime = time.time()
factorialN = Factorial(number)
print "runtime is %s"%(time.time() - startTime)
#print "Factorial %d is %d"%(number, factorialN)
인터넷을 검색 중 100000! 계산에 관한 글을 보고 실습해 본 코드.
2008년 구매한 노트북에서도 3.2초면 계산이 끝난다. ( * 결과 출력 할 때는 "젠틀맨" 뮤비 한 편 보고 나면 된다. )
math.factorial() 함수를 사용하는 것보다, 분할해서 계산하는게 3배 이상 빠르다.
* 참고 : 100000! 관련 KLDP 링크
http://kldp.org/node/129900
http://kldp.org/node/129379
http://kldp.org/node/129116
http://kldp.org/node/129044
http://kldp.org/node/107470
100000! 결과 : 100000.txt
심심해서 추가로 돌려본 1000000! ( 백만 팩토리얼 )
계산은 5분 만에 끝났으나, 출력이 한 시간도 넘게 걸린 듯...
1000000! 결과 : 1000000!.zip
Cython 설치 (4) | 2013.12.15 |
---|---|
fibonacci 수열 (0) | 2013.06.20 |
KMP algorithm (0) | 2013.05.06 |
tempResult = [0, 1, 1];
def fibonacci (number):
if ( number == 1 or number == 2):
return 1
if ( tempResult[number] == -1 ):
result = fibonacci ( number-1 ) + fibonacci ( number-2 )
tempResult[number] = result
return tempResult[number]
for idx in range(3,1001):
tempResult.insert(idx, -1)
for idx in range(1,1001):
print idx," : ",fibonacci(idx)
위와 같이 사용하면, 재귀일지라도 매우 빠른 속도로 1부터 1000까지의 피보나치 수열의 값을 구할 수 있다.
더 빠르게 계산하는 방법은 아래와 같다.
def fibonacci2 (number):
if ( number == 1 or number == 2):
return 1
previous = 1
result = 1
sum = 0
for i in range(3, number+1):
sum = result + previous
previous = result
result = sum
print i," : ",result
return result
fibonacci2(1000)
1-1000까지 피보나치 수열의 값 : finbonacci_1000.txt
100000! ( 100000 팩토리얼 ) & 1000000! ( 1000000 팩토리얼 ) (0) | 2013.06.22 |
---|---|
KMP algorithm (0) | 2013.05.06 |
10000개의 겹치는 않는 좌표 만들기 (0) | 2012.11.07 |
여행지 사진 - 인도 (0) | 2012.08.07 |
---|---|
달팽이 (0) | 2012.01.16 |
Taj Mahal ( 타지마할 ) 사진모음 2 (0) | 2011.08.25 |
주롱새 공원 (0) | 2012.01.02 |
---|---|
2012년 1월 1일 Singapore 불꽃쇼 (0) | 2012.01.01 |
Green belt (0) | 2013.02.07 |
---|---|
Snow village in Ocean park (0) | 2013.02.07 |
Oceanarium (0) | 2013.02.07 |
해운대 (0) | 2013.07.22 |
---|---|
해운대 모래축제 ( 2013 ) (0) | 2013.06.08 |
해운대 모래축제 ( 2013 ) (0) | 2013.06.08 |
[ 서편제 ]
해운대 모래축제 ( 2013 ) (0) | 2013.06.08 |
---|---|
해운대 모래축제 ( 2013 ) (0) | 2013.06.08 |
해운대 모래축제 ( 2013 ) (0) | 2013.06.08 |