C++ 中数字因数的乘积


给定一个数字 n,我们需要找到它的所有因数,并找到这些因数的乘积并返回结果,即数字的因数乘积。数字的因数是可以完全整除该数字的数字,包括 1。例如,6 的因数是 - 1、2、3、6。

现在根据任务,我们需要找到数字的所有因数的乘积。

输入 - n = 18

输出 - 5832

解释 - 1 * 2 * 3 * 6 * 9 * 18 = 5832

输入 - n = 9

输出 - 27

解释 - 1 * 3 * 9 = 27

下面使用的解决问题的方法如下 -

  • 获取输入 num。

  • 循环从 i = 1 到 i*i<=num

  • 检查如果 num%i==0,则检查

    • 如果 num%i == i,则将 product 的值设置为 (product*i)%1e7

    • 否则将 product 设置为 (product * i) % MAX 并将 product 设置为 (product * num / i) % MAX。

  • 返回 product。

算法

Start
In Function long long productfactor(int num)
   Step 1→ Declare and Initialize product as 1
   Step 2→ For i = 1 and i * i <= num and i++
      If num % i == 0 then,
      If num / i == i then,
         Set product as (product * i) % MAX
      Else
         Set product as (product * i) % MAX
         Set product as (product * num / i) % MAX
   Step 3→ Return product
In Function int main()
   Step 1→ Declare and initialize n as 9
   Step 2→ Print the result productfactor(n)
Stop

示例

 在线演示

#include <stdio.h>
#define MAX 1000000000
// find the product of the factors
long long productfactor(int num){
   long long product = 1;
   for (int i = 1; i * i <= num; i++){
      if (num % i == 0){
         //equal factors should be multiplied only once
         if (num / i == i)
         product = (product * i) % MAX;
         // Else multiply both
         else {
            product = (product * i) % MAX;
            product = (product * num / i) % MAX;
         }
      }
   }
   return product;
}
int main(){
   int n = 9;
   printf("%lld\n", productfactor(n));
   return 0;
}

输出

如果运行以上代码,它将生成以下输出 -

27

更新于: 2020-08-13

362 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告