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

ผลรวมสูงสุดของตัวเลขที่แตกต่างกัน โดยที่ LCM ของตัวเลขเหล่านี้เป็น N ใน C++


ในปัญหานี้ เราคือตัวเลข N หน้าที่ของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมสูงสุดของตัวเลขที่แตกต่างกัน โดยที่ LCM ของตัวเลขเหล่านี้เป็น N ใน C++

คำอธิบายปัญหา

เราต้องหาผลรวมของตัวประกอบทั้งหมดของจำนวน N แล้วบวกค่าที่ต่างกันทั้งหมดเพื่อหาผลรวมสูงสุด

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

N = 12

ผลลัพธ์

28

คำอธิบาย

All distinct factors of N are 1, 2, 3, 4, 6, 12.
Sum = 1 + 2 + 3 + 4 + 6 + 12 = 28

แนวทางการแก้ปัญหา

วิธีแก้ปัญหาง่ายๆ คือการหาตัวประกอบทั้งหมดของตัวเลข แล้วบวกตัวประกอบที่แตกต่างกันทั้งหมดเพื่อหาผลลัพธ์

สำหรับสิ่งนี้ เราจะวนซ้ำจนถึงรากที่สองของ N และตรวจสอบว่าตัวเลขหาร N หรือไม่ ถ้าใช่ ให้ตรวจสอบว่ามีความแตกต่างกันหรือไม่ ถ้าใช่ ให้เพิ่มตัวเลขและผลหารหาร มิฉะนั้น ให้เพิ่มตัวเลข ส่งคืนผลรวมสูงสุดสุดท้าย

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#include <iostream>
using namespace std;
int calcMaxSumForLCM(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 = 17;
   cout<<"The sum of distinct numbers such that LCM if these numbers is "<<N<<" is "<<calcMaxSumForLCM(N);
   return 0;
}

ผลลัพธ์

The sum of distinct numbers such that LCM if these numbers is 17 is 18