โจทย์: Minimum Sum of Factors
แยก n เป็นผลคูณของตัวเลข > 1 ให้ผลรวมของตัวเลขเหล่านั้นน้อยที่สุด
คำตอบ: ผลรวมของ Prime Factors (รวมซ้ำ)
เหตุผล
สำหรับ composite factor a × b = c (a,b > 1): a + b ≤ c (ยกเว้น 2×2=4)
→ แยกเป็น prime factors ให้ผลรวมน้อยที่สุด
ตัวอย่างโค้ด
public class Demo {
static int minSumFactors(int n) {
int sum = 0;
// Factor 2
while (n % 2 == 0) {
sum += 2;
n /= 2;
}
// Odd factors
for (int p = 3; p * p <= n; p += 2) {
while (n % p == 0) {
sum += p;
n /= p;
}
}
// Remaining prime
if (n > 1) {
sum += n;
}
return sum;
}
public static void main(String[] args) {
int n = 350; // 350 = 2 × 5² × 7
// Sum = 2 + 5 + 5 + 7 = 19
System.out.println("Minimum sum of factors of " + n + " = " + minSumFactors(n));
}
}
ผลลัพธ์
Minimum sum of factors of 350 = 19
ตัวอย่างอื่นๆ
| n | Prime Factorization | Min Sum |
|---|---|---|
| 12 | 2² × 3 | 2+2+3=7 |
| 36 | 2² × 3² | 2+2+3+3=10 |
| 100 | 2² × 5² | 2+2+5+5=14 |
| 13 (prime) | 13 | 13 |