美文网首页
入门算法 - 质因数分解

入门算法 - 质因数分解

作者: 蒋佳秋 | 来源:发表于2018-05-20 17:53 被阅读0次

内容同步于我的博客:https://blog.bigrats.net/archives/basic-alg-prime-factors.html

题目描述

输入一个正整数,按照从小到大的顺序输出它的所有质因数

输入描述

输入一个long类型的整数

输出描述

按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

示例

Input:

180

Output:

2 2 3 3 5 

问题分析

我们首先应该知道,对一个正整数N来说,如果其存在除1和本身外的其他因数,那么必然会在N的平方根左右成对出现。根据这个原理,我们可以分析得出,N最多只存在一个大于sqrt(N)的质因数。

算法描述

  1. 枚举从2到sqrt(N)的所有质数fac,判断fac是否为N的因数;
    • 若fac为N的因数,则输出一次fac,并将N除以fac,得到新的N,重复此步骤直到fac不是N的因数为止
    • 若fac不是N的因数,则跳过
  2. 在枚举结束后,若N依然不为1,则说明原N有且仅有一个大于sqrt(原N)的质因数,直接输出此数即可。

代码

#include <cstdio>
#include <cmath>

using namespace std;

bool isPrime(int num) {
    int sqr = (int)sqrt(num);
    if(num == 1) return false;
    for(int i = 2; i <= sqr; i++) {
        if(num % i == 0) return false;
    }
    return true;
}

int main(int args, char* argv[]) {
    long inpnum;
    
    while(scanf("%ld", &inpnum) != EOF) {
        long uplimit = (long)sqrt(inpnum);
        for(long fac = 2; fac <= uplimit; fac++) {
            if(isPrime(fac)) {
                while(inpnum % fac == 0) {
                    printf("%ld ", fac);
                    inpnum /= fac;
                }
            }
        }
        if(inpnum != 1) {
            printf("%ld ", inpnum);
        }
        printf("\n");
    }
    return 0;
}

相关文章

  • 入门算法 - 质因数分解

    内容同步于我的博客:https://blog.bigrats.net/archives/basic-alg-pri...

  • 分解质因数和应用

    分解质因数是什么分解质因数就是将一个合数分解成多个质数相乘的形式,这就是分解质因数。我举个最简单的例子,比如说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/quptjftx.html