标签:style c class blog code java
题目:质因数分解,给定一个整数,求该数的所有质因数,例如 90 = 2*3**3*5。
首先,质数的定义(引用百度百科):
1 bool isZS(int n) 2 { 3 int sqrtN = (double)sqrt((double)n); 4 if ( n==1 ) return true; 5 if ( n==2 ) return true; 6 if (sqrtN*sqrtN == n) return false; 7 for (int i=2;i<=sqrtN;i++) 8 { 9 if ((n%i) == 0 ) 10 return false; 11 } 12 13 return true; 14 }
然后是递归求解所有的质因数:
1 void findAllZYS(int n) 2 { 3 if (n == 1) 4 { 5 cout<<1; 6 return ; 7 } 8 if (n == 2) 9 { 10 cout<<2; 11 return; 12 } 13 if (isZS(n)) 14 { 15 cout<<" "<<n<<endl; 16 return; 17 } 18 int i = 2; 19 for (i=2;i<=n;i++) 20 { 21 if (isZS(i) && n%i == 0) 22 { 23 cout<<i<<" "<<endl; 24 break; 25 } 26 } 27 28 int nxtN = n / i; 29 if (isZS(nxtN)) 30 { 31 cout<<nxtN<<" "<<endl; 32 return; 33 } 34 else 35 { 36 findAllZYS(nxtN); 37 } 38 39 }
好了,上面就是我的思路和代码了,抛砖引玉~欢迎指点~~
质因数分解(给定一个整数,求该数的所有质因数),布布扣,bubuko.com
标签:style c class blog code java
原文地址:http://www.cnblogs.com/alway6s/p/3746790.html