美文网首页
分解素因数——1. 质因数的个数

分解素因数——1. 质因数的个数

作者: 辘轳鹿鹿 | 来源:发表于2020-06-29 15:27 被阅读0次

质因数的个数

题目描述

求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有5个质因数。

输入描述:

可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。

输出描述:

对于每组数据,输出N的质因数的个数。

示例1

输入

120

输出

5

解题心得:

  • 分解素因数: image.png
  • 算法:我们按照之前所讲的素数筛选法(见素数筛选——2. 素数)预先筛选出所有可能在题面所给定的数据范围内成为素因数的素数。并在程序输入待处理数字n时,依次遍历所有小于n的素数,判断其是否为n的因数。若确定某素数为n的因数,则通过试除确定其对应的幂指数。最后求出各个幂指数的和即为所求。
  • 题目中n小于10^9,素数只需筛选到100000即可。数n最多只可能存在一个大于100000的素因子,其幂指数必为1。
  • 程序运行时出错,经检查是因为乘法溢出。添加当i>=1000时,不再找该素数的倍数,即
if(i>=1000)
     continue;
  • 提交程序时,记得检查是否把自测时额外的输出已删除。
  • 当我们完成素因数分解后我们同样可以确定被分解整数因数的个数为


    image.png
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>



int main(){

   int m[100001]={0},n,i,j,size=0,msize[100000];
   for(i=2;i<=100000;i++){
        if(m[i]==0){
                msize[size]=i;
                size++;
              
            if(i>=1000)
                continue;
            for(j=i;j*i<=100000;j++){
                m[j*i]=1;
            }
        }
   }


   while(scanf("%d",&n)!=EOF){

        int nsize[100000]={0},sum=0;
    for(i=0;i<size;i++){
        if(n<=1){
            break;
        }
        while(n%msize[i]==0){
            nsize[i]++;
            n=n/msize[i];
            
        }
    }
    if(n>1){
        sum++;
    }
    for(j=0;j<i;j++){
        sum=sum+nsize[j];
    }
    printf("%d\n",sum);
   }
    return 0;

}

如果觉得有帮助,就点个赞再走吧^_^

相关文章

  • 分解素因数——1. 质因数的个数

    质因数的个数 题目描述 求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有...

  • 阶乘分解

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

  • 分解质因数和应用

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

  • python入门级别算法系列 -1 分解质因数

    1.题目:分解质因数   将一个正整数分解质因数,即分解为由若干个质数相乘的结果,例如:输入90,打印出, 其中2...

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

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

  • 6. 质因数的个数

    题目描述 求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有5个质因数。 ...

  • 质因数分解

    题目:求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有5个质因数。 x(...

  • 分解质因数

    def analysisNum(num): analysisNum(100)

  • 分解质因数

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

  • 分解质因数

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

网友评论

      本文标题:分解素因数——1. 质因数的个数

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