Java题解 | HJ6 #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
输入描述:输入一个整数
输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
解法
质数因子的意思就是这个数的所有质数约数,这个数可以由这些质数相乘得到。另外,题目要求是质数因子从小到大排序,以此,尝试质数因子时,也从小到大尝试。
l 输入一行,代表要计算值
l 对输入值进行正平方根,该平方根即为质数因子的最大值
l 从最小的质数开始尝试,不断尝试直到不能被除尽
l 输出每个质数因子
/* * Copyright (c) waylau.com, 2022. All rights reserved. */ package com.waylau.nowcoder.exam.oj.huawei; import java.util.Scanner; /** * HJ6 质数因子. 描述:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举) (如180的质因子为2 2 3 3 5 ) * 输入描述:输入一个整数 输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。 * * @author <a href="https://waylau.com">Way Lau</a> * @since 2022-08-06 */ public class HJ6PrimeFactor { public static void main(String[] args) { // 输入一行,代表要计算值 Scanner sc = new Scanner(System.in); Long in = sc.nextLong(); // 返回一个正确舍入的double值的正平方根 long k = (long) Math.sqrt(in); // 从最小的质数开始尝试 for (long i = 2; i <= k; i++) { // 不断尝试直到不能被除尽 while (in % i == 0) { System.out.print(i + " "); in /= i; } } // 输出 System.out.println(in == 1 ? "" : in + " "); // 关闭资源 sc.close(); } }
参考引用
- 本系列归档至https://github.com/waylau/nowcoder-exam-oj
- 《Java 数据结构及算法实战》:https://github.com/waylau/java-data-structures-and-algorithms-in-action
- 《数据结构和算法基础(Java 语言实现)》(柳伟卫著,北京大学出版社出版):https://item.jd.com/13014179.html
#华为机考#