首页 > 代码库 > java每日小算法(4)

java每日小算法(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 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);
 }
}