唯一分解定理,也叫算术基本定理,指的是任何n>=2,都可以分解为n=p1*p2*p3*.....pn,其中pi为质数。
其包括两个断言:断言1:数n可以以某种方式分解成素数乘积。
断言2:仅有一种这样的因数分解。(除因数重排外)。
其可以化简为 n=p1^x1*p2^x2*p3^x3.....pn^xn。其中pi均为质数。
Description
mmoaay小侄子今年上初中,老师出了一道求约数个数的题目,比如8的约数有1,2,4,8共4个。
当数比较小的时候可以人工算,当n较大时就难了。
mmoaay嫌麻烦,现在让你编个程序来算。
Input
一行一个整数。最后以0结束。
Output
分别求出这些整数的约数个数,最后的0不用处理。
Sample Input
8 100 0
Sample Output
4 9
解题思路:这里就使用唯一分解定理将所给的整数分解 n=p1^x1*p2^x2*p3^x3.....pn^xn,约数的个数就是(x1+1)*(x2+1)(x3+1).......(xn+1)。
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int main() 5 { 6 int n,i,counts; 7 int ans; 8 while(scanf("%d",&n)!=EOF) 9 { 10 ans=1; 11 if(n==0) 12 { 13 break; 14 } 15 for(i=2; n!=1; i++) 16 { 17 counts=1; 18 while(n%i==0) 19 { 20 counts++; 21 n=n/i; 22 } 23 ans=ans*counts; 24 } 25 printf("%d ",ans); 26 } 27 return 0; 28 }