在 C++ 中查找 n! 中素数 p 的幂

c++server side programmingprogramming更新于 2025/3/15 12:07:17

在这个问题中,我们给出了一个数字 n 和一个素数 p。我们的任务是查找 n! 中素数 p 的幂

让我们举一个例子来理解这个问题,

输入:n = 6,p = 2
输出:4

解决方法

这个问题的一个简单解决方法是简单地找到 n! 的值。然后对其进行因式分解,并在因式分解中找到素数 p 的幂。

在这里,数字可以表示为 5 中 2 的幂因式分解! = 30 是 3。

n 的阶乘值为

$$n!\:=\:n^*(n-1)^*(n-2)^*(n-3)\dotso{^*}2^*1$$ 

$$n!\:=\:3^*2^*1\:=\:6$$

设 n = 6 且 p = 2,

n! = 6! = (2*3*4*5*6)

n! = 720

720 的因式分解为 2*2*2*2*3*3*5

6 的因式分解中 2 的幂!是 4。

因此输出是 4。

示例

程序来说明我们的解决方案的工作原理

#include <iostream>
using namespace std;
int powerOfPrimeNfactorial(int N, int P){
   int primePower = 0;
   int factVal = P;
   while (factVal <= N) {
      primePower += N / factVal;
      factVal = factVal * P;
   }
   return primePower;
}
int main(){
    int N = 6;
    int P = 2;
    cout<<"<N<<"<<中素数<<<P<<"的幂为<<<powerOfPrimeNfactorial(N, P) << endl;
    return 0;
}

输出

6!中素数2的幂为4

相关文章