오일러 피 - 서로소

✅ 오일러 피의 핵심 이론

오일러 피 함수의 원리

① 구하고자 하는 오일러 피의 범위만큼 배열을 초기화 한다.

2부터 시작해 현재 배열의 값과 인덱스가 같으면( = 소수 일때) 현재 선택된 숫자(K)의 배수에 해당하는 수를 배열에 끝까지 탐색하며 P[i] = P[i] - P[i]/K연산을 수행한다. (i는 K의 배수)

③ 배열의 끝까지 ②를 반복하여 오일러 피 함수를 완성한다.

<aside> 📌

P[i] = P[i] - P[i]/k의 의미

이 식은 현재 수 i에서 k의 배수인 수들의 개수를 제거하는 연산입니다.

따라서

P[i] = P[i] - P[i]/k

👉 “i에서 소수 k와 공약수를 가지는 수는 제외하고, 나머지만 남긴다”는 의미입니다.

예: P[6] = 6 일때, (현재 선택된 수가 2인 상태에서 P[6]의 값을 갱신 중)

✅ 오일러 피 함수의 원리 이해하기

  1. 구하고자 하는 범위까지 배열을 생성한 후 2를 선택한다. (1부터 15까지 범위에서 15와 서로소인 자연수 갯수, 2부터 시작한다.)

image.png

  1. 2의 모든 배수마다 P[i] = P[i] - P[i]/2 연산을 수행해 값을 갱신한다. 예를 들어 P[8] = 8 - (8 / 2)를 통해 4를 계산한다. (N=2, 4, 6, 8, 10, 12, 14에 대해서 수행하여 값을 갱신한다.즉, 위의 연산을 통해 2의 배수들을 제거해준다.)

image.png

  1. 소수 구하기에서 배수를 지우는 부부만 P[i] = P[i] - P[i] / K로 변경하면 오일러 피 함수를 간단히 구현할 수 있습니다. 탐색을 계속 진행하면서 N = ∅(N)인 곳(소수)을 찾아 값을 갱신한다.

image.png

  1. 배열이 끝날 때까지 반복한다