【程序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 test; import java.util.ArrayList; import java.util.List; public class test { public static List<Integer> factor(int num) { List<Integer> list = new ArrayList<Integer>(); int temp = num; int max = num/2; for(int i = 2; i<=max; i++) { if(temp == 1) break; while(true) { if(temp == 1) break; if(temp%i == 0) { list.add(i); temp = temp / i; } else break; } } return list; } public static void main(String[] args) { long a = System.currentTimeMillis(); for(int i = 101; i<= 120; i++) { List<Integer> list = new ArrayList<Integer>(); list = factor(i); if(list.size()>0) { System.out.print(i+" = "); for(int j=0; j<list.size(); j++) { if(j<list.size()-1) System.out.print(list.get(j)+" * "); else System.out.print(list.get(j)); } System.out.println(); } else System.out.println(i+" = 1 * "+i); } System.out.println(System.currentTimeMillis() - a); } }