[11689] GCD(n, k) = 1 (오일러 피, 서로소)

2023. 6. 7. 21:33·Coding Test/Math
728x90
 

11689번: GCD(n, k) = 1

자연수 n이 주어졌을 때, GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

분석

  1. 구하고자 하는 오일러 피의 범위만큼 리스트를 자기 자신의 인덱스 값으로 초기화
  2. 2부터 시작해 현재 리스트의 값과 인덱스의 값이 같으면(소수) 현재 선택된 숫자k의 배수에 해당하는 수를 리스트에 끝까지 탐색하며 P[i]=P[i]-P[i]/k 연산을 수행 (i는 k의 배수)
  3. 리스트의 끝까지 2를 반복하여 오일러 피 함수 완성

 

풀이

"""
자연수 n이 주어졌을 때, GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 구하는 프로그램을 작성하시오.
첫째 줄에 자연수 n (1 ≤ n ≤ 1012)이 주어진다.
"""
import math
n=int(input())
res=n

for p in range(2, int(math.sqrt(n))+1): # 제곱근까지만 진행
    if n%p==0: # 소인수인지
        res-=res/p
        while n%p==0:
            n/=p

if n>1:   # 반복문에서 제곱근까지만 탐색했으므로 1개의 소인수가 누락되는 케이스 처리
    res-=res/n

print(int(res))

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'Coding Test/Math' 카테고리의 다른 글
  • [1850] 최대공약수 (유클리드 호제법)
  • [1033] 칵테일 (최소공배수, 최대공약수, 유클리드호제법)
  • [1016] 제곱 ㄴㄴ 수(제곱으로 나누어떨어지지 않는 수)
  • [1747] 소수&팰린드롬
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    큐
    조합
    파이썬
    DFS
    Algorithm
    다익스트라
    스택
    정렬
    백준
    최대공약수
    최단거리
    구현
    자료구조
    구간합
    BFS
    이분탐색
    LIS
    힙
    최소신장트리
    프로그래머스
    재귀
    알고리즘
    월간코드챌린지
    트리
    DP
    플로이드워셜
    그리디
    덱
    그래프
    동적계획법
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
[11689] GCD(n, k) = 1 (오일러 피, 서로소)
상단으로

티스토리툴바