zoukankan      html  css  js  c++  java
  • 阶乘因式分解:求阶乘后某因子个数

    给定两个数m,n

    求m!分解质因数后因子n的个数。

    这道题涉及到了大数问题,如果相乘直接求的话会超出数据类型的范围。

    下面给出一种效率比较高的算法,我们一步一步来。

    m!=1*2*3*……*(m-2)*(m-1)*m

    可以表示成所有和n倍数有关的乘积再乘以其他和n没有关系的

        =(n*2n*3n*......*kn)*ohter     other是不含n因子的数的乘积   因为 kn<=m 而k肯定是最大值  所以k=m/n

        =n^k*(1*2*......*k)*other  

        =n^k*k!*other     

    从这个表达式中可以提取出k个n,然后按照相同的方法循环下去可以求出k!中因子n的个数。

    每次求出n的个数的和就是m!中因子n的总个数。

    int jc(int n,int m)
    {
    int sum=0;
    while(n)
    {
    sum
    +=n/m;
    n
    /=m;
    }
    return sum;
    }
  • 相关阅读:
    面试问题记录-C++
    面试问题记录-网络
    二叉树
    75. Sort Colors 荷兰国旗问题
    桶排序
    数据结构-堆
    快速排序
    第六章 数据库原理
    第五章 Java Web
    第四章 java基础知识
  • 原文地址:https://www.cnblogs.com/andyidea/p/jiechengyinshifenjie.html
Copyright © 2011-2022 走看看