在 C++ 中根据约数查找数字
在这个问题中,我们给定一个包含 N 个整数的数组 divisors[],这些整数是数字 Num 的约数。我们的任务是从其约数中找到该数字。
约数数组不包含 1 和该数字本身。
让我们举个例子来理解这个问题,
输入
divisors[] = {3, 25, 5, 15}输出
75
解释
The number 75 has divisors {3, 25, 5, 15}解决方案方法
为了解决这个问题,我们需要使用数字的最小和最大约数来找到数字 Num。
Num = smallest * largest
为此,我们需要对数组 divisors[] 进行排序,然后找到数组中第一个和最后一个索引处的元素的乘积。
对于数字 Num,找到该数字的所有因子。并检查数字的约数是否与约数数组中的相同。如果是,则返回 Num。否则,返回 -1,表示无法找到该数字。
程序说明了我们解决方案的工作原理,
示例
#include <bits/stdc++.h>
using namespace std;
int findNumberFromDiv(int divisors[], int n){
sort(divisors, divisors + n);
int num = divisors[0] * divisors[n - 1];
int numDiv[2*n];
int count = 0;
for (int i = 2; i * i <= num; i++){
if (num % i == 0){
numDiv[count] = i;
count ++ ;
numDiv[count] = num/i;
count++;
}
}
sort(numDiv, numDiv + count);
if (count != n)
return -1;
else{
for (int i = 0; i < count; i++) {
if (divisors[i] != numDiv[i])
return -1;
}
}
return num;
}
int main(){
int divisors[] = { 3, 25, 5, 15 };
int n = sizeof(divisors) / sizeof(divisors[0]);
cout<<"The number is "<<findNumberFromDiv(divisors,n);
return 0;
}输出
The number is 75
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP