import java.util.ArrayList; import java.util.Arrays; /** * 返回一个数的质因数的列表 * input:8 * return:[2,2,2] * * input:12 * return:[2,2,3] * * * 基本思想: * 先判断该数是否是质数,如果是直接加入到集合中并返回。 * 如果不是,求给定数的一个因式分解 例如12=3*4,12=2*6 那么使用3,4也行;2,6也可以 * 然后分别将因式分解中的两个数递归调用该方法。 */ public class Get_prime_factor { public static boolean is_prime(int data){ if(data<=2&&data>0){ return true; } for(int i=2;i<=data/2;i++){ if(data%i==0) { return false; } } return true; } public static void help(int data,ArrayList list){ int first=0; int second=0; if(is_prime(data)){ list.add(data); return; } for(int i=2;i<=data/2;i++) { if (data % i == 0) { first = i; second = data / i; break; } } help(first,list); help(second,list); } public static ArrayList<Integer> get_prime_factor(int data){ ArrayList<Integer> list=new ArrayList<Integer>(); help(data,list); return list; } public static void main(String[] args) { ArrayList<Integer> prime_factor = get_prime_factor(18); System.out.println(Arrays.toString(prime_factor.toArray())); } }
将一个数分解为质因数的乘积
最新推荐文章于 2021-11-06 21:31:15 发布