Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
Tags
- 실기
- hdl
- HDLBits
- amba
- AMBA BUS
- Xilinx
- Vivado
- java
- linux
- Bus
- Beakjoon
- UNIX
- 자격증
- vitis
- axi
- SQL
- Backjoon
- chip2chip
- 백준
- C++
- 정보처리기사
- verilog HDL
- Zynq
- boj
- baekjoon
- verilog
- 리눅스
- 정처기
- 코딩테스트
- FPGA
Archives
- Today
- Total
Hueestory
[11689] GCD(n, k) = 1 (C++) 본문
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ll n; cin >> n;
ll ans = n;
for (ll i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
ans -= ans / i;
while (n % i == 0) {
n /= i;
}
}
}
if (n > 1)
ans -= ans / n;
cout << ans;
return 0;
}
오일러 피 함수를 구현하는 문제
GCD(n, k) = 1은 1 ~ n의 범위에서 n과 서로소인 자연수 k를 뜻한다
예를 들어 n = 10이면 1 2 3 4 5 6 7 8 9 10, 4개가 존재한다
n = n - n / k 연산(코드내에서는 k 대신 i 사용)을 반복하면 된다
for문 i의 범위를 n의 제곱근으로 설정하지 않아 시간 초과가 났던 문제
'PS(중단) > BOJ' 카테고리의 다른 글
[1850] 최대공약수 (C++) (0) | 2024.05.23 |
---|---|
[1934] 최소공배수 (C++) (0) | 2024.05.23 |
[1016] 제곱 ㄴㄴ 수 (C++) (0) | 2024.05.21 |
[1747] 소수&팰린드롬 (C++) (0) | 2024.05.21 |
[1456] 거의 소수 (C++) (0) | 2024.05.21 |
Comments