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