求质因数

此博客链接:

求质因数

题目

给定一个输入,输出这个数的所有质因数的乘积形式。例如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;
    }
}

 

结果

全部测试用例通过

 

posted @ 2021-06-08 11:00  萍2樱释  阅读(295)  评论(0编辑  收藏  举报