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; } }