JAVA 基础编程练习题4 【程序 4 分解质因数】

4 【程序 4 分解质因数】

题目:将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。

程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:

(1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果 n<>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数 n,重复执行第一 步。

(3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。

package cskaoyan;

import org.junit.Test;

public class cskaoyan4 {

	@Test
	public void zhiYinShu() {
		java.util.Scanner in = new java.util.Scanner(System.in);
		int number = in.nextInt();
		int prime = 2;
		in.close();

		if (number < 2) {
			return;
		} else {
			System.out.print(number + "=");

			while (number != prime) {
				if (number % prime == 0) {
					System.out.print(prime + "*");
					number = number / prime;
				} else {
					prime = nextPrime(prime);
				}
			}

			System.out.print(number);
		}
	}

	public int nextPrime(int number) {
		number = number + 1;

		while (true) {
			if (isPrime(number)) {
				return number;
			} else {
				number = number + 1;
			}
		}
	}

	public boolean isPrime(int number) {
		boolean flag = true;

		if (number < 2) {
			flag = false;
		} else if (number == 2) {
			flag = true;
		} else {
			for (int i = 2; i <= Math.sqrt(number); i++) {
				if (number % i == 0) {
					flag = false;
					break;
				}
			}
		}

		return flag;
	}
}

猜你喜欢

转载自www.cnblogs.com/denggelin/p/11280147.html