[백준] [C++] 11689번 GCD(n, k) = 1 (오일러 피 함수)
2021. 7. 15. 07:00ㆍ알고리즘/백준
1. 문제
11689번: GCD(n, k) = 1 (acmicpc.net)
2. 풀이
오일러 피 함수는 n과 서로소인 1부터 n까지의 정수를 리턴하는 함수이다.
오일러 피 함수 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <bits/stdc++.h>
using namespace std;
long long n;
long long factorSimple()
{
long long ret = n;
long long sqrtn = sqrt(n);
for (long long div = 2; div <= sqrtn; div++) {
if(n%div == 0) {
ret = ret / div * (div - 1);
}
while(n%div==0) {
n /= div;
}
}
if(n != 1) {
ret = ret / n * (n-1);
}
return ret;
}
int main() {
cin>>n;
long long answer = factorSimple();
cout<<answer;
}
|
cs |
'알고리즘 > 백준' 카테고리의 다른 글
[백준] [C++] 1761번 정점들의 거리 (LCA, segment tree) (0) | 2021.07.20 |
---|---|
[백준] [C++] 1708번 볼록 껍질 (geometry) (0) | 2021.07.19 |
[백준] [C++] 3015번 오아시스 재결합 (stack) (0) | 2021.07.14 |
[백준] [C++] 2533번 사회망 서비스(SNS) (dfs, greedy) (0) | 2021.07.13 |
[백준] [C++] 1275번 커피숍2 (segment tree) (0) | 2021.07.10 |