这题如果知道一个定理的话就很好做了!
定理:
一个正整数 n 可以用素因子唯一表示为 p1^r1 * p2^r2 * ... pk^rk (其中 pi 为素数) , 那么这个数的因子的个数就是,(r1+1)*(r2+1)*...*(rk+1).
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int a1,a2,a3,a4;
long long n,sum;
while(scanf("%I64d",&n)!=EOF&&n!=0)
{
a1=a2=a3=a4=0;
while(n%2==0)
{
n/=2;
a1++;
}
while(n%3==0)
{
n/=3;
a2++;
}
while(n%5==0)
{
n/=5;
a3++;
}
while(n%7==0)
{
n/=7;
a4++;
}
sum=(a1+1)*(a2+1)*(a3+1)*(a4+1);
printf("%I64d\n",sum);
}
return 0;
}