因子数
描述
给定一个整数x,定义g(x)是x的因子个数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。
输入
第一行是一个整数n,接下来总共n行。
每行两个正整数a和b,1<=a<=b<=5000,表示闭区间[a,b]。
输出
对每组测试数据,在单独的一行中输出一个整数,即对应的区间因子最多的数,如果满足条件有多个,则输出其中最小的数。
输入样例 1
3 2 3 1 10 47 359
输出样例 1
2 6 240
#include <iostream>
#include <vector>
using namespace std;
// 计算x的因子个数的函数
int countDivisors(int x) {
int count = 0;
for (int i = 1; i <= x; ++i) {
if (x % i == 0) {
count++;
}
}
return count;
}
int main() {
int n;
cin >> n; // 输入测试数据的组数
while (n--) {
int a, b;
cin >> a >> b; // 输入区间[a, b]
int maxDivisors = 0;
int numberWithMaxDivisors = a;
// 遍历区间 [a, b],找出因子最多的数
for (int i = a; i <= b; ++i) {
int divisors = countDivisors(i);
if (divisors > maxDivisors || (divisors == maxDivisors && i < numberWithMaxDivisors)) {
maxDivisors = divisors;
numberWithMaxDivisors = i;
}
}
cout << numberWithMaxDivisors << endl; // 输出因子最多的数
}
return 0;
}
如有侵权,联系删除
1436

被折叠的 条评论
为什么被折叠?



