C++反素数的解法?

描述
给你一个正整数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;
}