목차

피보나치 서로소

ps
링크acmicpc.net/…
출처BOJ
문제 번호28474
문제명피보나치 서로소
레벨플래티넘 5
분류

수학

시간복잡도O(T*sqrt(n))
인풋사이즈T<=1,000, n<=1,000,000,000
사용한 언어Python 3.11
제출기록31120KB / 164ms
최고기록156ms
해결날짜2024/02/14

풀이

코드

"""Solution code for "BOJ 28474. 피보나치 서로소".

- Problem link: https://www.acmicpc.net/problem/28474
- Solution link: http://www.teferi.net/ps/problems/boj/28474

Tags: [math]
"""

import sys
from teflib import numtheory


def main():
    T = int(sys.stdin.readline())
    for _ in range(T):
        n = int(sys.stdin.readline())

        if n == 1:
            answer = 0
        elif n == 2:
            answer = 1
        else:
            answer = numtheory.euler_phi(n)
            if n % 4 == 0:
                answer += answer // 2
            elif n % 2 == 0:
                answer += answer

        print(answer)


if __name__ == '__main__':
    main()