思路
牛客竞赛题解
看到根号,先平方
m是完全平方数,所以 枚举[1,n]的所有完全平方数(1 * 1,2 * 2,3 * 3……),对于每一个完全平方数求其因子个数;
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,num;
int fun (int x) //求x的因子个数;
{
int count = 0;
for(int i=1;i<=sqrt(x);i++) //<=根号x即可
{
if(i == sqrt(x)) count++; //意味着i*i = x,因子数加一
else if(x%i == 0) count+=2; //i*某个数 = x,因子数加2
}
return count;
}
int main()
{
cin>>n;
for(int m=1;m<=sqrt(n);m++) //枚举根号m的范围,从1到n
num += fun(m*m);
cout<<num;
}