Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาผลรวมตัวประกอบน้อยที่สุดของจำนวนด้วย C++

ที่นี่เราจะดูวิธีหาผลรวมตัวประกอบ (Sum of Factors) น้อยที่สุดของจำนวนที่กำหนด สมมติจำนวนคือ 12 เราสามารถแยกตัวประกอบได้หลายวิธี -

  • 12 = 12 * 1 (12 + 1 = 13)
  • 12 = 2 * 6 (2 + 6 = 8)
  • 12 = 3 * 4 (3 + 4 = 7)
  • 12 = 2 * 2 * 3 (2 + 2 + 3 = 7)

ผลรวมน้อยที่สุดคือ 7 เราจะรับจำนวน และพยายามหาผลรวมตัวประกอบน้อยที่สุด เพื่อให้ได้ผลรวมตัวประกอบน้อยที่สุด เราต้องแยกตัวประกอบจนกว่าจะไม่สามารถแยกได้อีก กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่า ถ้าเราพยายามหาผลรวม S โดยการบวกตัวประกอบเฉพาะ (Prime Factors) ผลรวมจะถูกทำให้เหลือน้อยที่สุด

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

int primeFactorSum(int n) {
    int s = 0;
    for (int i = 2; i * i <= n; i++) {
        while (n % i == 0) {
            s += i;
            n /= i;
        }
    }
    s += n;
    return s;
}

int main() {
    int n = 12;
    cout << "Minimum sum of factors: " << primeFactorSum(n);
}

ผลลัพธ์

Minimum sum of factors: 7