ในส่วนนี้ เราจะดูวิธีที่เราสามารถหาผลรวมของตัวประกอบเฉพาะคู่ (Even Prime Factors) ของจำนวนได้อย่างมีประสิทธิภาพ มีจำนวนเช่น 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 หาร 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; // ลด n โดยการหารด้วย 2
}
return sum;
}
int 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