BISHI56 分解质因数

思路

求解代码

java 复制代码
public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

        Long n = Long.parseLong(br.readLine().trim());

        for (long i = 2; i * i <= n; i++) {
            while (n % i == 0) {
                out.print(i+" ");
                n/=i;
            }
        }
        if(n>1){
            out.print(n+" ");
        }

        out.flush();
        out.close();
        br.close();
    }

小贴士

后面那个if语句主要是处理分解后剩余的、大于√n 的质因数。

如果不加这个判断,会导致部分质数或大质因数无法被输出,最终分解结果不完整。

因为代码中外层循环的终止条件是 i * i <= n,只检查到√n,

如果一个数 n 能被分解为 a × b(a ≤ b),则 a 必然 ≤ √n,b 必然 ≥ √n。

因此只需检查到√n,就能找到所有小质因数,剩余的未分解部分要么是 1,要么是一个大于√n 的质数。

相关推荐
FL16238631292 小时前
windows从源码安装python版本paddleocr3.4.0
开发语言·windows·python
感性的程序员小王2 小时前
拒绝硬编码!利用 Java SPI 打造一个可插拔的代码解析器
java·后端
爱跑步的程序员~2 小时前
SpringBoot集成SpringAI与Ollama本地大模型
java·后端·spring·ai·llama·springai
Grandpa_Rick2 小时前
Join Module: Iteration #6 Nested Join
java
m0_531237172 小时前
C语言-static关键词,寄存器变量,define宏定义
c语言·开发语言
Y‍waiX‍‍‮‪‎⁠‌‫‎‌‫‬2 小时前
CentOS7安装多版本jdk并切换jdk版本
java·jdk·centos
疯狂敲代码的老刘2 小时前
MyBatis Generator GUI 下载安装教程 可视化MyBatis代码生成
java·mybatis·mybatis-ui
追随者永远是胜利者2 小时前
(LeetCode-Hot100)23. 合并 K 个升序链表
java·算法·leetcode·链表·go
Moshow郑锴3 小时前
Java SpringBoot 疑难 Bug 排查思路解析:从“语法正确”到“行为相符”
java·spring boot·bug