约数的个数
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; }
相关文章推荐
- gdb
- 一致性hash算法
- Java语言底层架构
- JAVA上机——2.6
- hduoj 海选女主角 题目2022
- LeetCode之Compare Version Numbers
- ROS(4):机器人手臂&freeCAD
- 学习排序算法简单
- C++用法的学习心得
- WIN32串口编程详解
- 网络请求时WiFi边上的菊花
- 顺序表应用举例
- hdu 2089 不要62
- 等价类划分--三角形测试用例设计
- C++ Primer Plus 第6版 中文版 第5章编程练习
- 题目1388:跳台阶 -- 简单的动归 注意数据范围
- hdu 2604 汉诺塔III 递推
- LeetCode 278--First Bad Versionx先判断
- Android——广播
- [PHP自动化-进阶]004.Snoopy VS CURL 模拟Discuz.net登陆