C++ 程序如何求某个数的偶数因子之和?

server side programmingprogrammingc++

在本节中,我们将了解如何高效地求出某个数的所有偶数素因数之和。假设有一个数,n = 480,我们必须求出这个数的所有因数。480 的素因数为 2、2、2、2、2、3、5。所有偶数因子之和为 2+2+2+2+2 = 10。要解决这个问题,我们必须遵循此规则 −

  • 当该数能被 2 整除时,将它们加到和中,然后反复将该数除以 2。

  • 现在该数一定是奇数。所以我们找不到任何偶数因子。然后简单地忽略这些因素。

让我们看看算法以获得更好的想法。

算法

printPrimeFactors(n)

begin
   sum := 0
   当 n 可以被 2 整除时,执行
      sum := sum + 2
      n := n / 2
   done
end

示例

#include<iostream>
using namespace std;
int sumEvenFactors(int n){
   int i, sum = 0;
   while(n % 2 == 0){
      sum += 2;
      n = n/2; //通过将 n 除以 2 来减少 n
   }
   return sum;
}
main() {
   int n;
   cout << "输入一个数字:";
   cin >> n;
   cout << "所有偶数素因数之和:<< sumEvenFactors(n);
}

输出

输入一个数字:480
所有偶数素因数之和:10

相关文章