这一题我感觉是考验你的优化能力,一种方法(这题很不淡定,因为Case Wa了两次)。
代码:
#include<stdio.h>
int main()
{
long long int n,i,j,sum,k ;
int q=1 ;
while(scanf("%lld",&n)!=EOF)
{
sum=0 ;
for(i=1;i*i<=n;i++)// 找因子 只需找到sqrt(n) ;分两步:如果i*i!=n ;
{ // 再去找n/i 情况 例如:n=10 ,i=2时 分别找2和5的所有因子
if(n%i==0)
{
k=n/i ;
for(j=1;j*j<=i;j++)
if(i%j==0)
{
if(j*j!=i)
sum+=2 ;
else sum+=1 ;
}
}
if(n%i==0&&k!=i)
{
for(j=1;j*j<=k;j++)
if(k%j==0)
{
if(j*j!=k)
sum+=2 ;
else sum+=1 ;
}
}
}
printf("Case %d: %lld\n",q++,sum) ;//别忘了Case!!!!淡定!
}
return 0 ;
}