对于任何一个正整数 ,如果
是它的一个因子,那么
必然也是它的一个因子。通常情况下,因子是成对出现的。举例:数字
的因子有:
(共
个,偶数个)。数字
的因子有:
(共
个,偶数个)。什么时候因子数量会变成奇数呢?只有当其中一对因子相等时,即
,也就是
。这意味着:一个正整数的因子个数为奇数,当且仅当它是一个“完全平方数”。解题步骤转化问题: 题目要求求
中因子数量为奇数的整数个数,等价于求
中完全平方数的个数。计算方法: 一个正整数
的平方
如果要小于等于
,即
,则
。结论: 在
范围内,完全平方数的个数正好是
(即对
向下取整)。示例验证当
时:
,向下取整得
。符合条件的数是
。当
时:
,向下取整得
。C++ 参考代码由于
且
,直接使用 sqrt 函数即可轻松过题。C++#include
#include
#include<bits/stdc++.h>
using namespace std;
void solve() {
int n;
if (cin >> n) {
int res = (int)sqrt(n);
cout << res << endl;
}
}
int main() {
int T;
cin >> T;
while (T--) {
solve();
}
return 0;
}
全部评论
(0) 回帖