ในส่วนนี้เราจะดูวิธีหาผลรวมของตัวประกอบเฉพาะคู่ของจำนวนอย่างมีประสิทธิภาพ มีจำนวน 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 by 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