반응형
문제
자연수 n이 주어졌을 때, GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 구하는 프로그램을 작성하시오.
문제풀이
#01
def Euler(n):
ans=n
for i in range(2,round(n**0.5)+1):
#02
if n%i==0:
while n%i==0:
n//=i
ans*=1-(1/i)
#03
if n>1:
ans*=1-(1/n)
return ans
n=int(input())
#04
ans=Euler(n)
print(round(ans))
- #01 : 오일러 피 함수를 구현한 것이다. (아래 링크를 참조)
- #02 : n의 서로소를 구하고 오일러 피함수의 공식대로 1-(1/i)를 해준다.
- #03 : 만약 위의 while문을 끝낸 n이 1보다 크다면 최종적으로 ans에 1-(1/n)을 해준다.
- #04 : 구한 값을 출력해준다.
'프로그래밍 > 백준' 카테고리의 다른 글
[알고리즘] 백준 2417 파이썬 - 정수 제곱근 (2) | 2023.04.18 |
---|---|
[알고리즘] 백준 13706 파이썬 - 제곱근 (2) | 2023.04.17 |
[알고리즘] 백준 2443 파이썬 - 별 찍기 - 6 (1) | 2023.04.15 |
[알고리즘] 백준 1153 파이썬 - 네 개의 소수 (2) | 2023.04.14 |
[알고리즘] 백준 6588 파이썬 - 골드바흐의 추측 (2) | 2023.04.14 |