美文网首页
如何分解质因数?

如何分解质因数?

作者: 好学人 | 来源:发表于2019-10-08 23:50 被阅读0次

题目描述:

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

概念梳理:

什么是质数?

质数(Prime Number),是指在大于1的自然数中,只能被1它本身整除的自然数。

如何判断整除?

给定除数n和被除数N,如果N / n的余数为零,则称N能被n整除。
在编程中,可用取模运算判断整除问题。

什么叫分解质因数?

即将一个合数写成几个质数相乘的形式,就叫做分解质因数。

思路分析:

  1. 根据质数的定义,实现一个算法,用于判断一个自然数是不是质数;
  2. 找出1~N中所有的质数;
  3. 循环判断N能否被1~N中的质数整除,如果能被整除,则该质数为N的一个质因数;
  4. 拿到第3步整除后的结果,重复执行第2、3两步,直到整除的结果也是一个质数为止。

代码实现:

  1. 判断一个数是否为质数
/**
 * 判断一个是否为质数
 * 如果一个数n只能被1或n整除,则该数为质数,即:
 * 如果一个数n不能被1~n之间的任何数整除,则该数为质数。
 */
public boolean isPrimeNumber(int n) {
    for (int i = 2; i < n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}
  1. 递归分解质因数
public void factoringNumber(int n) {
    if (isPrimeNumber(n)) {
        System.out.print(n); // 直到n为质数,分解质因数完成
        return;
    }
    for (int i = 2; i < n; i++) {
        if (isPrimeNumber(i)) { // i是否为质数
            if (n % i == 0) { // n 能否被i整除
                System.out.print(i + " * ");
                int result = n / i; // 整除后的结果
                factoringNumber(result); // 递归分解质因数
                break; // 注意:找到一个质因数后即退出循环
            }
        }
    }
}
  1. 分解质因数测试
factoringNumber(1001); // 7 * 11 * 13

总结:

解决问题,第一步要做的就是弄清除题目中的各个基本概念。如果基本概念不清楚,是很难正确地思考的。

比如本题中,首先要弄清的就是质数整除余数分解质因数等概念。对基本概念有了深入的理解后,解决问题起来就如虎添翼了。

题目里有一个值得注意的地方,就是在找到一个质因数后,要退出循环,否则会循环会继续执行。

遇到代码执行结果与预期结果不符时,要冷静分析,只需要按照代码逻辑(Debug)在大脑里执行一遍即可。

相关文章

  • 如何分解质因数?

    题目描述: 将一个正整数分解质因数。例如:输入90,打印出90 = 2 * 3 * 3 * 5。 概念梳理: 什么...

  • 分解质因数和应用

    分解质因数是什么分解质因数就是将一个合数分解成多个质数相乘的形式,这就是分解质因数。我举个最简单的例子,比如说4它...

  • 辅导笔记(4):质因数分解

    // 把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。 //输入样例:36 //输出:3...

  • 阶乘分解

    题目链接:阶乘分解分解阶乘的质因数。将1~N每个数,分别分解质因数合并的时间复杂度是。对于N!来说假设p

  • 分解质因数

    def analysisNum(num): analysisNum(100)

  • 分解质因数

    题目将一个正整数分解质因数。例如:输入90,打印出90=233*5. 程序分析 对n进行分解质因数,应先找到一个最...

  • 分解质因数

    对一个整数进行分解质因数。方法一:暴力: 方法二:Pollard Rho算法时间复杂度为n^0.25 原文请点击这...

  • 分解质因数

  • 分解质因数

    //输入两个数字a,b,则输出从a到b之间的所有整数的分解出质因数乘积的式子 void calArray(int ...

  • 分解质因数

    题目内容:每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如...

网友评论

      本文标题:如何分解质因数?

      本文链接:https://www.haomeiwen.com/subject/mbtwpctx.html