java每日小算法(4)
时间:2014-05-16 02:05:48
收藏:0
阅读:382
【程序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);
}
}
评论(0)