팩토리얼 카운터
IT 위키
팩토리얼 카운터(factorial counter)는 주어진 수 n! (n 팩토리얼)의 소인수 분해 결과를 바탕으로, 특정 소수들이 n! 안에 얼마나 곱해져 있는지를 세는 수론적 알고리즘 또는 함수이다. 일반적으로 정수 n에 대해 n!에 등장하는 소수 p의 지수를 구하는 데 사용된다.
정의[편집 | 원본 편집]
팩토리얼 카운터는 다음 문제를 해결한다: 정수 n이 주어졌을 때, n!의 소인수 분해에서 어떤 소수 p가 몇 번 곱해지는가?
즉, n!을 소인수 분해했을 때
- n! = pep × ...
에서 ep를 구하는 것이다.
공식[편집 | 원본 편집]
정수 n에 대해, 소수 p의 지수 ep는 다음 공식으로 계산된다.
e_p = ⌊n/p⌋ + ⌊n/p²⌋ + ⌊n/p³⌋ + ... (p^k ≤ n인 동안 계속)
이 공식은 p의 거듭제곱들이 n 이하인 동안 n을 그 거듭제곱으로 나눈 몫의 합으로 계산된다.
예시[편집 | 원본 편집]
예를 들어, 10! = 3628800의 소인수 분해에서 2의 지수를 구하면 다음과 같다.
- ⌊10/2⌋ = 5
- ⌊10/4⌋ = 2
- ⌊10/8⌋ = 1
- 합계: 5 + 2 + 1 = 8
따라서, 10!은 28을 포함한다.
파이썬 구현[편집 | 원본 편집]
def factorial_prime_exponent(n, p):
exponent = 0
power = p
while power <= n:
exponent += n // power
power *= p
return exponent
# 예시
n = 10
p = 2
print(f"{p}의 지수:", factorial_prime_exponent(n, p)) # 출력: 8
응용[편집 | 원본 편집]
- 조합식(nCr)의 소수성 판별
- 소수로 나누어떨어지는 계승 값 계산
- 크고 복잡한 팩토리얼 연산의 정수론적 분석
- 소수 모듈로의 나눗셈 계산 전 소인수 처리
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Graham, R. L., Knuth, D. E., & Patashnik, O. (1994). Concrete Mathematics (2nd ed.). Addison-Wesley.
- Hardy, G. H., & Wright, E. M. (2008). An Introduction to the Theory of Numbers (6th ed.). Oxford University Press.