JAVA实现对整数的质因数分解

题目内容:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。
比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。
现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。

输入格式:
一个整数,范围在[2,100000]内。
输出格式:
形如:
n=axbxcxd

n=n
所有的符号之间都没有空格,x是小写字母x。

输入样例:
18
输出样例:

 

18=2x3x3

 

 

代码示例:

 

import java.util.Scanner;

public class Main {

    /**
     * 判断素数
     * @param i 要判断的数
     * @return 是素数返回true
     */
    private static boolean isPrime(int i) {

        boolean isPrime = true;

        //除到i的平方根就可以判断
        for (int k = 2; k <= Math.sqrt(i); k++) {

            if( i % k == 0) {
                isPrime = false;
            }

        }
        return isPrime;
    }

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        StringBuilder out = new StringBuilder(n + "=");

        if(isPrime(n)) {
            // 当读到的就是素数时,输出它本身:n=n
            out.append(n);

        } else {
            // 当读到的不是素数时,输出它的质因数分解式:n=axbxcxd
            while(n != 1) {
                for(int j = 2; j <= n; j++) {
                    
                    // 对最后一个进行特殊处理
                    if(j == n) {
                        n = 1;
                        out.append(j);
                        break;
                    }
                    // j为当前n的第一个因数时,一定是n的质因数
                    if( n % j == 0) {
                        n = n / j;
                        out.append(j).append("x");
                        break;
                    }
                }
            }
        }
        System.out.println(out);
        in.close();
    }

}


运行结果:

 

JAVA实现对整数的质因数分解_第1张图片

你可能感兴趣的:(Java)