Java实现把正整数分解为质因数的乘积

来源:互联网 发布:淘宝权限管理 编辑:程序博客网 时间:2024/06/06 04:55

1、质因数的定义: 每个合数都可以写成几个质数(素数)相乘的形式,这些质数就叫该合数的质因数。

2、根据算术基本定理,任何正整数皆有独一无二的质因子分解式子。

3、用到的函数:

判断是否为质数:判断n以内的质数,只要n不能分解即可。

判断n以内的最小素数;

分解函数:递归调用dispose函数,用n不断除以计算出的n以为的最小素数,直到除尽。


下面是正确代码:

import java.util.Scanner;/** *  @author   LilyLee * @date     2017年4月25日 * @time     下午10:24:10 * @Version  1.0 * @email    lilylee_1213@foxmail.com * */public class DecomposeInt {static int LEN=1000;  //定义正整数的最大值int[] result=new int[LEN];int x=0;public static void main(String[] args) {Scanner sc=new Scanner(System.in);DecomposeInt di=new DecomposeInt();System.out.println("input number");int num=sc.nextInt();di.dispose(num);String ss="";for(int i=0;i<di.result.length;i++){if(di.result[i]>0)ss+=di.result[i]+"*";}System.out.println(num+"="+ss.substring(0, ss.length()-1));}public static boolean isPrime(int n){if(n==2) return true;for(int i=2;i<Math.sqrt(n);i++){if(n%i==0) return false;}return true;}public static int[] minPrime(int n){int [] prime=new int [LEN];int a=0;for(int i=2;i<=n;i++){if(isPrime(i)){prime[a++]=i;}}return prime;}public void dispose(int n){int[] min=DecomposeInt.minPrime(n);int j=0;for(j=0;j<min.length;j++){if(n%min[j]==0){this.result[x++]=min[j];if(n==min[j]) return;break;}}this.dispose(n/min[j]);}}


1 0
原创粉丝点击