您的位置:首页 > 其它

约数的个数

2015-09-08 20:14 155 查看

约数的个数

Description

mmoaay小侄子今年上初中,老师出了一道求约数个数的题目,比如8的约数有1,2,4,8共4个。

当数比较小的时候可以人工算,当n较大时就难了。

mmoaay嫌麻烦,现在让你编个程序来算。

Input

一行一个整数。最后以0结束。

Output

分别求出这些整数的约数个数,最后的0不用处理。

Sample Input

8
100
0

Sample Output

4
9

题解:求正整数378000共有多少个正约数?

解:将378000分解质因数378000=2^4×3^3×5^3×7^1
由约数个数定理可知378000共有正约数(4+1)×(3+1)×(3+1)×(1+1)=160个。

#include <stdio.h>
#include <math.h>
#define N 70000
#define LL long long
bool prime
;
int a
;
void Prim()
{
int i, j;
for(i = 2; i < N; i++)
{
if(i % 2)
prime[i] = false;
else
prime[i] = true;
}
for(i = 3; i <= sqrt(N); i += 2)
if(prime[i])
for(j = i + i; j < N; j += i)
prime[j] = false;
j = 1;
a[0]=2;
for(i = 2; i < N; i++)
if(!prime[i])
a[j++] = i;
}
int main()
{
LL t;
Prim();
while(scanf("%lld",&t),t)
{
LL s=1,i;
for(i=0;;i++)
{
if(t==1)
break;
LL num=1;
while(t%a[i]==0)
{
num++;
t/=a[i];
}
s*=num;
}
printf("%lld\n",s);
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: