OJ_1087 约数的个数
2014-02-20 15:40
190 查看
#include <iostream> #include <stdlib.h> using namespace std; int getnum(int n) { int sum=0; for(int i=1;i<=n;i++) { if(n%i==0)sum++; } return sum; } int getnum1(int n) { int a, i, sum=1; for(i=2; i*i <= n; i++) { a=1; while(n%i==0) { a++; n/=i; } sum*=a; } if(n>1) sum=sum*2;//sum=(a1+1)*(a2+1)...(1+1)最后还有一个质因数所以要乘(1+1) return sum; } void func() { int n; while(cin>>n) { if(n==0)break; for(int i=0;i<n;i++) { int t; cin>>t; cout<<getnum1(t)<<endl; } } } int main(int argc, char *argv[]) { //printf("Hello, world\n"); func(); return 0; }
要用上“约数个数定理”
或开根号求约数,然后再*2或*2+1
题目描述:
输入n个整数,依次输出每个数的约数的个数
输入:
输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。
输出:
可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。
样例输入:
5 1 3 4 6 12
样例输出:
1 2 3 4 6
相关文章推荐
- 题目1087:约数的个数 九度OJ
- 九度 oj 题目1087:约数的个数
- 【九度OJ】题目1087:约数的个数 解题报告
- 九度OJ 1087 约数的个数 JAVA
- 九度OJ 1087:约数的个数
- 九度OJ 1087:约数的个数
- 九度OJ 1087 约数的个数
- 九度OJ 1087 约数的个数
- 【九度OJ】题目1087:约数的个数
- 九度OJ 1087 约数的个数解题报告
- 九度oj1087:约数的个数
- 九度OJ题目1087:约数的个数
- 杭电oj-1087-Super Jumping! Jumping! Jumping!
- 56-题目1087:约数的个数
- 九度OJ 1087 约数的个数
- 题目1087:约数的个数
- 杭电OJ——1087 Super Jumping! Jumping! Jumping!
- 题目1087:约数的个数
- OJ:约数个数
- 南邮 OJ 1203 最多约数问题