Tính hàm phi Euler

Xem PDF

Điểm: 300 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Trong số học, Hàm Euler \(\phi\) của một số nguyên dương \(n\) được định nghĩa là số lượng các số nguyên dương nhỏ hơn hoặc bằng \(n\) và nguyên tố cùng nhau với \(n\).

Yêu cầu: Cho số nguyên dương \(n\). Tính giá trị của \(\phi(n)\).

Input

  • Dòng thứ nhất chứa số \(t(1 \le t \le 50)\) - Thể hiện số lượng testcase.

  • t dòng tiếp theo, mỗi dòng chứa một số nguyên \(n(1 \le n \le 10^8)\).

Output

  • Ứng với mỗi testcase, in ra đáp án cần tìm.

Example

Test 1

Input
5
1
2
3
4
5
Output
1
1
2
2
4

Bình luận


  • 3
    GamerRobotSplash    7:44 a.m. 19 Tháng 9, 2024

    Code uy tính 100 phần trăm nhé!

    def euler_totient(n):  
        result = n  
        p = 2  
        while p * p <= n:  
            if n % p == 0:  
                while n % p == 0:  
                    n //= p  
                result -= result // p  
            p += 1  
        if n > 1:  # nếu n còn lại là một số nguyên tố lớn hơn 1  
            result -= result // n  
        return result  
    
    def main():  
        import sys  
        input = sys.stdin.read  
        data = input().split()  
    
        t = int(data[0])  
        results = []  
    
        for i in range(1, t + 1):  
            n = int(data[i])  
            results.append(euler_totient(n))  
    
        for res in results:  
            print(res)  
    
    if __name__ == "__main__":  
        main()
    

    • 4 bình luận nữa