Appia의 IT세상

파이썬[Python] 팩토리얼(Factorial)연산 하기 및 관련 제약 사항 본문

Python/Python 응용

파이썬[Python] 팩토리얼(Factorial)연산 하기 및 관련 제약 사항

Appia 2020. 5. 21. 07:11
반응형

이번 포스팅은 수학에서 많이 사용하는 팩토리얼(Factorial)연산하는 방법에 대해서 살펴보고자 합니다. 간단히 연산하는 방법 및 관련 제약사항등에 대해서 이야기를 해보고자 합니다. 

 

기본 팩토리얼 연산에 대해서 간단히 이야기 하면 다음과 같습니다. n의 팩토리얼(Factorial)은 1부터 n까지의 정수를 곱하는 단순한 연산입니다. 이를 표현할 때는 n! 이렇게 표시를 합니다. 간단히 예를 들자면, 5!은 1x2x3x4x5까지의 연산의 결과를 의미합니다. 즉, 결과는 120입니다. 

 

팩토리얼(Factorial)는 일반적으로 모든 양의 정수와 0에 대해서 정의 합니다. 0!는 값은 1입니다. 팩토리얼 함수를 가장 많이 사용하는 것은 경우의 수를 셀 때 가장 맣이 사용합니다. 

 

그럼 이제 파이썬[Python]으로 구해보도록 하겠습니다. 

example)

= 5
 
fact = 1
 
for i in range(1, n + 1):
 
    fact = fact * i
 
print(str(n)+" factorial : ", fact)
cs

result) 

5 factorial :  120
cs

위와 같은 형태로 팩토리얼(Factorial)을 구현할 수 있습니다. 하지만 이보다 조금 더 쉽게 math함수를 이용할 수 있습니다. 그럼 간단히 다음과 같이 살펴보도록 하겠습니다. 

example) 

import math
 
print(str(n)+" factorial : ", math.factorial(n))
cs

result) 

5 factorial :  120
cs

이와 같은 형태로 구현을 할 수가 있습니다. 즉, math 모듈을 불러와서 factorial 함수를 불러와 사용할 수 있습니다. 

 

그럼 이제부터는 몇가지 제약 사항들에 대해서 살펴보고자 합니다. 위에서 설명했던 바와 같이 factorial은 0과 양의 정수를 바탕으로 구현이 가능합니다. 그럼 다음 예시를 한번 살펴 보겠습니다. 

example) 

import math
 
print(str(-10)+" factorial : ", math.factorial(-10))
cs

result)

Traceback (most recent call last):
 
  File "C:/Users/Bens/PycharmProjects/Blogger/List_Merge.py", line 6in <module>
 
    print(str(-10)+" factorial : ", math.factorial(-10))
 
ValueError: factorial() not defined for negative values
cs

이와 같이 음수를 입력하면 다음과 같이 negative value에 대해서 정의 되지 않는다고 ValueError가 발생합니다. 그럼 다음 같은 코드도 또한 살펴보겠습니다. 

example)

import math
 
print(str(-0.3)+" factorial : ", math.factorial(-0.3))
cs

result) 

Traceback (most recent call last):
 
  File "C:/Users/Bens/PycharmProjects/Blogger/List_Merge.py", line 6in <module>
  
    print(str(-0.3)+" factorial : ", math.factorial(-0.3))
    
ValueError: factorial() only accepts integral values
cs

이와 같이 소수를 입력하면 integral value만 허용한다는 ValueError가 발생합니다. 실제 팩토리얼(Factorial)이 음수와 소수를 입력하면 문제가 되기 때문에 애시당초 다음과 같은 문제를 발생시킵니다. 

 

오늘은 팩토리얼(Factorial)연산에 관해서 알아봤습니다. 팩토리얼(Factorial) 연산을 반복문 또는 math모듈에서 불러와서 사용하는 방법에 대해서 살펴봤습니다. 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨 주시길 바랍니다. 감사합니다. 

반응형
Comments