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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1581750802 初级黑马   /  2018-11-22 12:58  /  645 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[Java] 纯文本查看 复制代码
package com.heima.employee.restday.demo02;

/**
 *【程序4】
 * 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
 */
/**
 * @author NOT ME
 * @description 递归练习题demo02第四题
 * @create 2018/11/15 0015下午 4:52
 */
public class Coder04 {
    static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) {
        StringBuilder tempSb = new StringBuilder();
        int num = 100000000;
        String s = printNum(num);
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (i == chars.length - 1) {
                break;
            }
            tempSb.append(chars[i]);
        }
        System.out.println(num + "=" + tempSb.toString());
    }

    /**
     * 先计算出最小的质数,然后再对num除以i的商进行递归。
     * @param num 正整数
     * @return: String 字符串
     * @Date: 2018/11/15 0015 下午 8:08
     */
    private static String printNum(int num) {
        // 先求出最小的质数,然后再进行递归
        for (int i = 2; i <= num; i++) {
            if (num % i == 0) {
                // 最小的质数,不再向下进行循环,再对num除以i的商进行递归。
                sb.append(i).append("*");
                int consult = num / i;
                printNum(consult);
                break;
            }
        }
        return sb.toString();
    }
}

0 个回复

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