1 #include <stdio.h> 2 void divid_number(int n) 3 { 4 int i; 5 for(i=2; i <= n; i++) 6 { 7 while(n!=1) 8 { 9 if(n%i==0) 10 { 11 printf("%d ",i); 12 n = n/i; 13 } 14 else break; 15 } 16 } 17 printf("\n"); 18 } 19 int main() 20 { 21 int n; 22 while(true) 23 { 24 printf("Input the number:"); 25 scanf("%d",&n); 26 divid_number(n); 27 } 28 return 0; 29 }
这个效率有一点低,但是可以求出一个32位整形数字的因式分解。一个稍微高效的方法是首先判断这个数字是不是个素数,然后再循环,此时循环的遍历区间也可以缩小到
n^(1/2)可以提高一些效率。
本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/archive/2012/04/28/2475491.html ,如需转载请自行联系原作者