分解质因数
这是中移物联网的笔试题,当时做题的时候,居然把质因子是什么,素数是什么都给忘了,于是下来补了一下,平时应该多练习算法呀
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); } }