BISHI73 【模板】欧拉函数计算Ⅰ ‖ 朴素求值:试除法

思路

求解代码

java 复制代码
public static void main(String[] args) throws IOException {
        // 使用BufferedReader读取输入,PrintWriter输出结果
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

        // 读取测试用例数量
        int T = Integer.parseInt(br.readLine().trim());

        // 处理每个测试用例
        for (int i = 0; i < T; i++) {
            long x = Long.parseLong(br.readLine().trim());
            out.println(euler(x));  // 输出当前测试用例的结果
        }

        // 清空输出缓冲区并关闭资源
        out.flush();
        out.close();
        br.close();
    }


    /**
     * 使用欧拉函数计算小于等于x的正整数中与x互质的数的个数
     * 欧拉函数公式:φ(n) = n * (1 - 1/p1) * (1 - 1/p2) * ... * (1 - 1/pk)
     * 其中p1, p2, ..., pk是n的质因数
     *
     * @param x 需要计算欧拉函数的正整数
     * @return 小于等于x的正整数中与x互质的数的个数
     */
    private static long euler(long x) {
        // 如果x为1,直接返回1,因为1与1互质
        if (x == 1) {
            return 1;
        }
        // 初始化结果为x
        long res = x;
        // 遍历从2到√x的所有数,寻找x的质因数
        for (long i = 2; i * i <= x; i++) {
            // 如果i是x的因数
            if (x % i == 0) {
                // 应用欧拉函数公式,乘以(1-1/i)
                res = res / i * (i - 1);

                // 去除x中所有的i因子
                while (x % i == 0) {
                    x /= i;
                }
            }
        }
        // 如果x大于1,说明x本身是一个质数,应用欧拉函数公式
        if (x > 1) {
            res = res / x * (x - 1);
        }

        return res;
    }
相关推荐
冉冰学姐3 小时前
基于ssm的技能比赛报名管理系统29817vn0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
java·数据库·spring·ssm 框架应用
代码雕刻家6 小时前
3.5.Maven-依赖管理-依赖配置&依赖传递
java·maven
Cg136269159746 小时前
JS-对象-Dom案例
开发语言·前端·javascript
!chen6 小时前
MyBatis-plus拓展之字段类型处理器、自动填充和乐观锁
java·tomcat·mybatis
故事和你916 小时前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象
Jin、yz7 小时前
JAVA 八股
java·开发语言
va学弟7 小时前
Java 网络通信编程(6):视频通话
java·服务器·网络·音视频
我是唐青枫7 小时前
C#.NET Span 深入解析:零拷贝内存切片与高性能实战
开发语言·c#·.net
pjw198809037 小时前
Spring Framework 中文官方文档
java·后端·spring
lxh01137 小时前
数据流的中位数
开发语言·前端·javascript