Java将一个正整数分解为质因数

import java.util.Scanner;

public class Test3 {
	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		// 输入
		System.out.print("请输入一个大于3的数:");
		int number = input.nextInt();
		fengjie(number);//55
	}

	public static void fengjie(int j) {
                    //Math.sqrt(55)=7.416...
		for (int i = 2; i < Math.sqrt(j); i++) {
             //i小于j的平方根     Math.sqrt(j)
			//平方根,又叫二次方根,表示为〔±√ ̄〕,其中属于非负数的平方根称之为算术平方根(arithmetic square root)。一个正数有两个实平方根,它们互为相反数,负数有两个共轭的纯虚平方根。
			// 这个if是找最小公倍数,最小公倍数:指两个或多个整数公有的倍数中最小的一个。
			if (j % i == 0) {//就是判断你输入的数(55),和2至你输入的数(55)的算术平方根之间的某一个数可以整除
				//5
				System.out.print(i + "*");

				// 这个if是判断他是不是素数,如果是素数,就将这个数输出,然后就执行break了
				if (isPrime(j / i)) {
					System.out.print(j / i);
				} else {
					// 如果不是素数,就继续分解,找公倍数
					fengjie(j / i);

					break;
				}

			}
		}
	}

	// 判断是否是素数
	public static boolean isPrime(int n) {//  n=j / i,55/5=11
		for (int i = 2; i < Math.sqrt(n); i++) {//Math.sqrt(11)=3.31...
			 //i小于n的平方根     Math.sqrt(n)
			if (n % i == 0) {//i==3
				return false;
			}
				
		}
		return true;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42470710/article/details/84421571