描述
给你一个正整数n,求[1,n]内因子最多的正整数是谁。
如果有多个正整数的因子数都是最多的,就输出最小的正整数。
输入
第一行一个整数tim表示数据组数。
接下来tim行,每行一个正整数表示n。
1≤tim≤100,1≤n≤1010。
输出
输出tim行,每行一个正整数表示包含因子数最多的正整数的值。
样例输入
5
1
2
3
10
20
样例输出
1
2
2
6
12
提示
10以内因子数最多的数是6,6有4个因子,分别是:1,2,3,6。
20以内因子数最多的数是12,12有6个因子,分别是:1,2,3,4,6,12。
int findMinTarget(int n) {
int half = sqrt(n);
int maxSum = 0;
int minFlag = 0;
for (int i = 1; i <= n; i++) {
int sum = 0;
for (int j = 1; j<= half; j++) {
if (i % j == 0) {
sum++;
}
}
if (sum >= maxSum && minFlag < i) {
maxSum = sum;
minFlag = i;
}
}
return minFlag;
}