C++中重複除以除數後的最大和
在這個問題中,我們給定一個整數 N。我們的任務是建立一個程式,該程式將在 C++ 中找到重複除以除數後獲得的最大和。
程式描述 - 我們將遞迴地除以數字 N,直到它變成 1,然後將所有除數加起來並找到所有除數中的最大值。
讓我們舉個例子來理解這個問題,
輸入 - N = 12
輸出 - 22
解釋 - 讓我們遞迴地除以數字並找到總和。
Division 1: 12/2 = 6 Division 2: 6/2 = 3 Division 3: 3/3 = 1 Sum = 12+6+3+1 = 22
為了解決這個問題,我們將透過將 N 除以 N 的最小除數來使各個值的**最大化**,從而找到最大和。
示例
程式說明解決方案的工作原理,
#include <bits/stdc++.h>
using namespace std;
int smallestDivisor(int n){
int mx = sqrt(n);
for (int i = 2; i <= mx; i++)
if (n % i == 0)
return i;
return n;
}
int calculateMaxSum(int n) {
long long maxSum = n;
while (n > 1) {
int divisor = smallestDivisor(n);
n /= divisor;
maxSum += n;
}
return maxSum;
}
int main(){
int N = 12;
cout<<"The maximum sum after repeatedly dividing "<<N<<" by divisor is "<<calculateMaxSum(N);
return 0;
}輸出
The maximum sum after repeatedly dividing 12 by divisor is 22
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP