lting☆ 2024-06-03 10:45 采纳率: 66.7%
浏览 8
已结题

关于#java#的问题:采用欧拉函数+快速幂来解题,感觉自己写得没错(相关搜索:互质数)

写下面的题,采用欧拉函数+快速幂来解题,感觉自己写得没错,就是通过不了。

img


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        long a = scan.nextLong();
        long b = scan.nextLong();
        long p = 998244353;
        long res = qmi(a,b,p);
        
        //欧拉函数
        long ans = res;
        for(long i = 2; i <= res / i; i++) {
            if(res % i == 0) {
                ans = ans / i * (i-1);
                while(res % i == 0) {
                    res /= i;
                }
            }
        }
        if(res > 1) {
            ans = ans / res * (res-1);
        }
        System.out.println(ans);
        
        scan.close();
    }
    
    //快速幂
    public static long qmi(long a, long b, long p) {
        long res = 1;
        while(b > 0) {
            if(b % 2 != 0) {
                res = res * a % p;
            }
            a = a * a % p;
            b /= 2;
        }
        return res;
    }
}

  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-06-03 10:45
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【解题思路】:使用欧拉函数φ(n)计算互质数的个数,结合快速幂算法求解。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月16日
  • 创建了问题 6月3日