ในปัญหานี้ เราได้รับหมายเลข N หน้าที่ของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมสูงสุดของตัวเลขที่ไม่ซ้ำกับ LCM เป็น N ใน C++
คำอธิบายปัญหา
ในที่นี้ เราต้องหาผลรวมของจำนวนสูงสุดที่มี N เป็นตัวคูณร่วมน้อย (LCM)
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
N = 10
ผลลัพธ์
18
คำอธิบาย
Maximum sum with LCM 10 is 1 + 2 + 5 + 10 = 18
แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการใช้แนวคิดที่ว่าถ้าเราต้องการตัวเลข N เป็น LCM เราจำเป็นต้องนำตัวหารเฉพาะของ N มาบวกกันเพื่อให้ได้ผลรวมสูงสุด
สำหรับสิ่งนี้ เราจะหาตัวประกอบทั้งหมดของ N แล้วนำมารวมกัน จะได้ค่าสูงสุดเมื่อเราพิจารณาตัวเลขทั้งหมดที่สามารถส่งผลให้ LCM เป็น N ได้
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#include <iostream> using namespace std; int calcFactorSum(int N){ int maxSum = 0; for (int i = 1; i*i <= N; i++){ if (N % i == 0) { if (i == (N/i)) maxSum = maxSum + i; else maxSum = maxSum + i + (N/i); } } return maxSum; } int main(){ int N = 42; cout<<"The sum of distinct numbers with LCM as "<<N<<" is "<<calcFactorSum(N); return 0; }
ผลลัพธ์
The sum of distinct numbers with LCM as 42 is 96