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 的质数。

相关推荐
房开民2 小时前
c++总结
java·开发语言·c++
好大哥呀2 小时前
C++ 多态
java·jvm·c++
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于Java的医院器材管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
float_com2 小时前
【java常用API】----- Arrays
java·开发语言
不会写DN3 小时前
PHP 中的文件读写与上传
android·开发语言·php
LuckyTHP3 小时前
迁移shibboleth java获取shibboleth用户信息
java·开发语言
客卿1234 小时前
数论===质数统计(暴力法,)
java·开发语言
Σίσυφος19004 小时前
C++ 多肽经典面试题
开发语言·c++·面试
华科易迅4 小时前
Spring 事务(注解)
java·数据库·spring
写代码的小阿帆4 小时前
Web工程结构解析:从MVC分层到DDD领域驱动
java·架构·mvc