在本节中,我们将看到如何高效地获得一个数的所有偶数素数之和。有一个数字说n = 480,我们必须得到所有的因子。480的素数是2、2、2、2、2、3、5。所有偶数之和为2 + 2 + 2 + 2 + 2 = 10。要解决此问题,我们必须遵循此规则-
当数字可被2整除时,将它们加和,然后反复将数字除以2。
现在数字必须是奇数。因此,我们将找不到任何偶数因素。然后,只需忽略这些因素。
让我们看看该算法以获得更好的主意。
begin sum := 0 while n is divisible by 2, do 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; //reduce n by dividing this by 2 } return sum; } main() { int n; cout << "Enter a number: "; cin >> n; cout << "Sum of all even prime factors: "<< sumEvenFactors(n); }
输出结果
Enter a number: 480 Sum of all even prime factors: 10