求质因数
此博客链接:
求质因数
题目
给定一个输入,输出这个数的所有质因数的乘积形式。例如45=3*3*5
题解
这题分为两点,一点是找质因数,另外一点说处理输出结果。
找质因数时,判断2到这个数开平方根中是否有整除的数,如果有的话则不是质数,如果没有的话,则是质数。
输出结果时,可以把全部满足条件的质数使用字符串拼接,这里需要注意,每个质数之间只有一个*号,但是我在拼接时,会多出一个*,需要对多出来的*做特殊处理,如果选*在数字前,需要把最后结果的第一个*去掉,如果选*在数字后,则需要把最后结果的最后一个*去掉,我这里是选择*在最前面,使用substring分割最后的结果,把第一个*去掉。
注意:
本题需要注意的是,一个数可能有重复的质因数,我是使用了while循环找出相同的质因数。
代码
import java.util.Scanner; public class leetcode { // private static final String FileUtils = null; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int c = n; String ans = ""; for (int i = 2; i <= n; i++) { if (prime(i) == true) { while (n % i == 0) { ans += "*" + i; n = n / i; } } } System.out.println(c + "=" + ans.substring(1, ans.length())); } public static boolean prime(int m) { for (int i = 2; i < Math.sqrt(m); i++) { if (Math.sqrt(m) % i == 0) { return false; } } return true; } }
结果
全部测试用例通过
出来混总是要还的