1. O(n) 朴素算法
typedef long long ll;
ll factor(ll n)
{
ll ans=0;
for(int i=1;i<=n;i++) // 遍历1 到 n 的每一个数
{
if(n%i==0)
{
ans++;
}
}
return ans;
}
2. O( n \sqrt n n) 算法
只需遍历 1到sqrt(n) 原因是
若i为约数,则n / i也为约数
计算 40 的因子个数为 8
分别是 1 2 4 5 8 10 20 40
观察规律 可发现
1 2 4 5 ( 4 0 \sqrt 40 40) 8 10 20 40
从 4 0 \sqrt 40 4