A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© maxwell247 中级黑马   /  2015-9-28 00:16  /  330 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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
*/

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马