콘텐츠로 건너뛰기
Home » [Python] 팩토리얼 계산

[Python] 팩토리얼 계산

안녕하세요! 꽃의비밀입니다. 이번 포스트에서는 파이썬으로 수학에서 팩토리얼(n!)을 계산하는 기능을 구현하는 소스를 살펴보도록 하겠습니다. 

팩토리얼의 정의

1부터 {displaystyle n}까지의 연속된 자연수를 차례로 곱한 값이다. 기호로는 {displaystyle n!}과 같이 느낌표(!)를 사용한다.

파이썬 Source로 구현하기

그럼 파이썬으로 1부터 n까지의 자연수를 곱한 팩토리얼(Factorial) 값을 구하는 프로그램을 구현해보도록 하겠습니다. Source는 아래와 같습니다.

import sys
 
class CalFactorial :
    def __init__(self):
        self.ret = 0        
 
    def factorial(self, number):
 
        if number < 0 :
            print("Number value is minus.")
            return -1
        elif number == 0 :
            print('Return is 1')
            return 1
        elif number < 101 :
            self.ret = 1
        else :
            print('Input number is over than 100')
            return
 
        for i in range(1, number+1):
            self.ret *= i
            print('VALUE=%d' % self.ret)        
 
        print('Return is %d' % self.ret)
        return self.ret
 
 
def main():
    run = CalFactorial()
    run.factorial(5)
 
if __name__ == '__main__':
    main()

 

RETURN 값

VALUE=1

VALUE=2

VALUE=6

VALUE=24

VALUE=120

Return is 120

Source의 설명

팩토리얼 계산은 1부터 n까지 계산을 하지만, 여기서는 1부터 5까지 계산을 하는 코드입니다. 먼저 CalFactorial 이라는 팩토리얼 계산을 하는 클래스를 선언을 하고 클래스 매소드로 factorial()을 선언을 하였습니다. 여기서 factorial()의 argument로 number를 선언하여 팩토리얼 계산을 하기 위한 n값을 입력하도록 했습니다.  

factorial() 매소드에서는 number에 따라서 조건식을 수행하게 되어 있으며, 음수가 입력되면 계산을 할수 없으므로 minus라는 메시지와 함께 수행이 종료됩니다. number가 0이면 0! 이므로 값이 1이 됩니다. 따라서 1을 Return을 하게 됩니다. factorial() 매소드에서는 최대 100! 까지 계산을 할수 있게 한도를 정했으며, 이 한도는 변경하여도 무방합니다. (100!도 엄청나게 큰 정수이므로 100이상은 계산의 필요성을 느끼지 못했습니다.) 만약 number가 100을 넘게 되면 관련 메시지와 함께 프로그램의 수행이 종료가 됩니다. 

실제 팩토리얼 계산은 파이썬의 for문을 사용하여 계산하였습니다. 범위를 1부터 number까지 설정하였으며, number의 값에 따라 Return값도 다르게 나오게 됩니다.  

파이썬으로 팩토리얼 계산하기 참 쉽죠?^^

'정원딸린집'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.
error: Content is protected !!