黑马程序员技术交流社区

标题: 练习三十:质因数分解问题 [打印本页]

作者: maxwell247    时间: 2015-9-28 00:16
标题: 练习三十:质因数分解问题
本帖最后由 maxwell247 于 2015-9-28 00:21 编辑

从网上找到一份编程练习题,我决定将里面的题目全都做一遍。

/*
        题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
*/

import java.util.Scanner;

class YinShuFenJie {
        public static void main(String[] args) {
                System.out.print("本程序将输出某数的因数分解。\n请输入一个正整数(大于1):");
                Scanner sc=new Scanner(System.in);
                int num=sc.nextInt();
                if (num<=1){
                        System.out.println("输入不合法!");
                }else if (isPrime(num)){
                        System.out.println(num+"本身就是一个素数.....");
                }else{
                        System.out.print(num+"=");
                        fenJie(num);
                }
        }

        //判断素数
        public static boolean isPrime(int n){
                for (int i=2; i<=Math.sqrt(n); i++){
                        if (n % i ==0){
                                return false;
                        }
                }
                return true;
        }

        //分解质因数
        public static void fenJie(int num){
                int i=2;
                while(i<=num){
                        if(isPrime(i) && num % i ==0){ //如果i是素数,并且 num能整除i
                                System.out.print(i+"*"); //则输出 i
                                num=num/i; //缩小num的区间
                        }else{
                                i++;
                        }
                        if (i==num){ //当 num缩小到和 i相等时,也就是分解到最后一个质因子
                                System.out.println(i); //直接输出该因子
                                break;
                        }
                }
        }
}

/*
        输出结果:
        本程序将输出某数的因数分解。
        请输入一个正整数(大于1):90
        90=2*3*3*5
*/






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2