标签:
mmoaay小侄子今年上初中,老师出了一道求约数个数的题目,比如8的约数有1,2,4,8共4个。
当数比较小的时候可以人工算,当n较大时就难了。
mmoaay嫌麻烦,现在让你编个程序来算。
一行一个整数。最后以0结束。
分别求出这些整数的约数个数,最后的0不用处理。
8
100
0
4 9
题解:求正整数378000共有多少个正约数?
#include <stdio.h> #include <math.h> #define N 70000 #define LL long long bool prime[N]; int a[N]; 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; }
标签:
原文地址:http://www.cnblogs.com/yu0111/p/4792812.html