• 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。


    题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
    (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
    (2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

    public class 第四题分解质因数 {
        public static void main(String[] args) {
            System.out.print("请输入一个正整数进行因数分解:");
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            if(n < 0) n = -n;
            //获取最小质数k
            int k = getMinPrime(n);
            System.out.print(n+"=");
            decompositionFactor(n, k);
            in.close();
        }
        //质因数分解一次
        public static int decompositionFactor(int n,int k) {
            if(n==k) {
                System.out.print(n);
                return n;
            }
            while(n != k) {
                if(n>k && n%k==0) {
                    System.out.print(k+"*");
                    return decompositionFactor(n/k, getMinPrime(n/k));
                }                 
                k++;
            }
            return n;
        }
        //判断一个数是否为素数
        public static boolean isPrime(int n) {
            for(int i=1; i<=Math.sqrt(n); i++) {
                if(n == 2) {
                    return true;
                }
                //不是素数
                if(n % 2 == 0) {
                    return false;
                }
            }
            return true;
        }
        //返回一个最小的质数
        public static int getMinPrime(int n){
            for(int i=2; i<=Math.sqrt(n); i++) {
                if(n % i == 0 && isPrime(i)) {
                    return i;
                }
            }
            return n;
        }
    }
  • 相关阅读:
    电脑休眠真是神一样
    用visual studio 2017来调试python
    判断两个字符串是不是异位词
    算法题思路总结和leecode继续历程
    今日头条笔试题目,还是没过.效率不够
    The init method
    Object-oriented features
    Modifiers
    Pure functions
    Classes and functions
  • 原文地址:https://www.cnblogs.com/zjulanjian/p/10952751.html
Copyright © 2020-2023  润新知