在 C++ 中从其除数中查找数字
在这个问题中,我们给出了一个数组divisors[],它由N个整数组成,这些整数是数字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,表示找不到该数字。
程序来说明我们的解决方案的工作,
示例
#includeusing 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<<"号码是 "< 输出结果 号码是 75