在 C++ 中查詢給定數字 N 的約數中最大的好數
在這個問題中,我們給定一個數字 N。我們的任務是查詢給定數字 N 的約數中最大的好數。
好數是指每個數字都大於其右側數字(所有小於它的有效位)的數字之和的數字。例如,732 是一個好數,7> 3+2 且 3>2。
讓我們舉個例子來理解這個問題,
Input : N = 15 Output : 15
解釋 -
Divisors of 15 : 1, 3, 5, 15.
解決方案方法
解決這個問題的一個簡單方法是找到 N 的所有約數。然後找到作為數字所有素數約數的乘積提取出的最大的好數。
示例
程式說明我們解決方案的工作原理
#include <bits/stdc++.h>
using namespace std;
int findLargestGoodNumber(int n){
vector<int> primeFactors;
int x = n;
for (int i = 2; i * i <= n; i++) {
if (x % i == 0) {
primeFactors.push_back(i);
while (x % i == 0)
x /= i;
}
}
if (x > 1)
primeFactors.push_back(x);
int goodNumber = 1;
for (int i = 0; i < primeFactors.size(); i++)
goodNumber = goodNumber * primeFactors[i];
return goodNumber;
}
int main(){
int n = 28;
cout<<"The largest good Number in divisor of "<<n<<" is "<<findLargestGoodNumber(n);
return 0;
}示例
The largest good Number in divisor of 28 is 14
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP