分解质因数

  这是中移物联网的笔试题,当时做题的时候,居然把质因子是什么,素数是什么都给忘了,于是下来补了一下,平时应该多练习算法呀

package com.personal.demo.test;

import java.util.Vector;

public class Resolve {
//判断是否是素数
public static boolean isPrime(int n){ boolean isprime=true; for (int i = 2; i <=n/2 ; i++) { if (n%i==0){ isprime=false; break; } } return isprime; } public static void resolve(int num){ //找出num/2以内的质数 Vector<Integer> vector=new Vector<>(); for (int i = 2; i <=num/2 ; i++) { if (isPrime(i)){ vector.add(i); } } System.out.print(num+"="); Vector<Integer> vector1=new Vector<>();
    //找出num能整除的数
for (int i = 0; i <vector.size() ; i++) { if (num%vector.get(i)==0){ vector1.add(vector.get(i)); num=num/vector.get(i); i--; } } for (int i = 0; i <vector1.size() ; i++) { if (i==vector1.size()-1){ System.out.println(vector1.get(i)); }else { System.out.print(vector1.get(i) + "*"); } } } public static void main(String[] args) { resolve(120); } }

看网上还有一种采用递归的方法,代码很是精简,但是输出格式需要自己排一下

public static void prim(int m)
    {
        int n = 2;
        if (m > n)
        {
            while (m%n != 0)
            {
                n++;
            }

            m /= n;

            prim(m);
            System.out.println(n);
        }
    }

 

posted @ 2018-09-19 15:50  叶子加雨  阅读(112)  评论(0编辑  收藏  举报