728x90
반응형
👀 뫼비우스 함수
: 정수가 제곱인수가 없는 정수인지 여부에 따라 분류하는 곱셈적 함수.
기호 : μ(n)
예) μ(1) = 1, μ(7) = -1, μ(30) = μ(2×3×5) = (-1)^3 = -1
✔️ 뫼비우스 함수
def mobius(n):
d = divisors(n)
for i in d:
if i**2 in d:
return 0
return (-1)**(sum([is_prime(i) for i in d]))
def divisors(n):
result = set()
for i in range(2, int(n**0.5)+1):
if n%i == 0:
result.add(i)
result.add(n//i)
return sorted(result) + [n]
def is_prime(n):
return n > 1 and all(n % i != 0 for i in range(2, int(n ** 0.5) + 1))
⭐ 소인수분해 함수 응용
def mobius(n):
a, result = 2, set()
while n>1 and a <= n**0.5:
while not n%a:
if a in result: return 0
result.add(a)
n //= a
a += (1 + (a!=2))
return (-1)**((len(result) + (n!= 1)) % 2)
반응형
'프로그램 개발 > Python' 카테고리의 다른 글
[코딩 인터뷰]자료구조 - 배열과 문자열 문제(Python) (1) | 2022.11.30 |
---|---|
[python] 정규표현식 예시 모음 (0) | 2022.11.29 |
[python] 소인수분해 (0) | 2022.11.25 |
[python] 소수 판별하기 (0) | 2022.11.24 |
[python] 약수 구하기 (0) | 2022.11.09 |