이 섹션에서는 효율적인 방법으로 숫자의 모든 짝수 소인수의 합을 구하는 방법을 살펴보겠습니다. n =480이라는 숫자가 있습니다. 이 모든 요소를 가져와야 합니다. 480의 소인수는 2, 2, 2, 2, 2, 3, 5입니다. 모든 짝수 인수의 합은 2+2+2+2+2 =10입니다. 이 문제를 해결하려면 이 규칙을 따라야 합니다. -
-
숫자가 2의 배수일 때 합에 더하고 숫자를 2로 반복해서 나눕니다.
-
이제 숫자가 홀수여야 합니다. 따라서 우리는 짝수인 요소를 찾지 못할 것입니다. 그런 다음 해당 요소를 무시하십시오.
더 나은 아이디어를 얻기 위해 알고리즘을 살펴보겠습니다.
알고리즘
printPrimeFactors(n)
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