zoukankan      html  css  js  c++  java
  • 分解质因数

      今天碰到一个问题:分解任意一个正整数的质因数然后打印,比如90=2*3*3*5。愣住了,根本不知道怎么搞,把质数的判断逻辑都忘得一干二净。后来回去看了下,原来判断一个数是否质数就是看从2开始到这个数的平方根能否被这个数整除,不能整除就是质数。有了这个逻辑再来分解质因数就简单了,只要不是质数就接着往下整除就是了。废话不说,直接上代码:

    package com.wulinfeng;
    
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Scanner;
    
    /**
     * 打印分解质因数
     */
    public class Example034 {
    
        public static void main(String[] args) {
            int num = new Scanner(System.in).nextInt();
            printPrimes(num);
        }
        
        /**
         * 获取分解后剩余值,打印质因数
         */
        public static int getNotPrime(int num) {
            // 1、判断num是否质数
            for (int i = 2; i <= Math.sqrt(num); i++) {
                // 2、不是则打印分解的质数,返回未被分解的数
                if (num % i == 0) {
                    System.out.print(i + "*");
                    num /= i;
                    return num;
                }
            }
    
            // 3、是质数,返回0
            return 0;
        }
    
        public static void printPrimes(int num) {
            int lastPrime = 0;
            System.out.print(num + "=");
            
            // 1、获取待分解数字第一次分解质因数后的结果
            int notPrime = getNotPrime(num);
    
            // 2、质数无须分解
            if (notPrime == 0) {
                System.out.println("待分解数为质数.");
                return;
            }
    
            // 3、只要分解后不为0,说明可以接着一直分解
            while (notPrime != 0) {
                lastPrime = notPrime;
                notPrime = getNotPrime(notPrime);
            }
    
            // 3、取得最后一个质数并打印
            System.out.print(lastPrime);
        }
    }
  • 相关阅读:
    团体程序设计天梯赛PTA L1-006连续因子
    团体程序设计天梯赛PTA L1-002打印沙漏
    spring学习3-配置文件
    markdown基本用法
    java贪食蛇小游戏
    在idea中使用lombook插件
    ajax初体验hello_ajax
    idea,自定义骨架的增加与删除
    idea 2017,2018,2019下载与破解
    idea关联mysql数据库失败,时区错误,数据库驱动配置
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/6493295.html
Copyright © 2011-2022 走看看