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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sxyqjdh 中级黑马   /  2016-4-19 22:47  /  475 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

??

1 个回复

正序浏览
public class Test4 {

        /**
         * 因式分解:
         * 将一个合数分解成它的所有因子的乘积
         * 例如90=2*3*3*5.
         * 分析:
         * 1.合数的所有因子都是素数
         * 2.将合数从最小的素数开始去除以, 如果能整除就 将商的结果继续除以该素数.直到该素数不能整除该商为止.
         * 3.将第2步的商 再去除以第二步的素数加+1的数  ,直到 该数 不能整除该商为止
         * 4.一直循环到除数等于 商为循环结束条件
         */
        public static void main(String[] args) {
                factorAnalysis(90);
        }
        //编写方法实现因式分解
        public static void factorAnalysis(int n){
                //定义变量记录住除数
                int  a=2;
                System.out.print(n+"=");
                while(a<=n){//如果除数小于等于被除数就一直循环判断输出结果
                        while (n%a==0&&n!=a) {//如果除数能过整除被除数
                                //输出该因子
                                System.out.print(a+"*");
                                //将商重新作为被除数
                                n=n/a;
                        }
                        if(n%a==0&&n==a) {
                                //输出最后一个因子
                                System.out.print(a);
                        }
                        //如果除数不能整除被除数就将 除数+1 再进行整除判断
                        a++;
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马