http://codeforces.com/problemset/problem/1068/B
B. LCM 计算
给定b(1e10),对于1<=a<=1e18,求lcm(a,b)/a的不同取值个数。
lcm(a,b)/a = a*b/gcd(a,b)/a = b/gcd(a,b),即求b的因数个数
ll b = read(), ans = 0, i;
for(i=1;i*i<b;++i)
if(b%i==0)
ans+=2;
if(i*i==b) ++ans;
printf("%I64d\n",ans );
#include<cstdio>
using namespace std;
long long n,c,i,ans;
int main()
{
scanf("%lld",&n);
for(i=1; i*i<=n; i++)
{
if(n%i==0)
ans+=2;
if(i*i==n)
ans--;
}
printf("%lld\n",ans);
}