黑马程序员技术交流社区

标题: 一道数学题,会得来 [打印本页]

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

??
作者: 陈文广    时间: 2016-4-20 11:07
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++;
                }
        }
}





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