歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言經典算法:如何較快的分解質因數

將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

初級算法:

  1. #include<stdio.h>   
  2. #include<stdlib.h>   
  3. #include<math.h>   
  4. int main()  
  5. {  
  6.         int n,i;  
  7.         scanf("%d",&n);  
  8.         printf("%d=",n);  
  9.         for(i=2;i<=sqrt(n);i++)  
  10.         {  
  11.            if(n%i==0)  
  12.            {  
  13.               n/=i;  
  14.               printf("%d*",i--);  
  15.        }  
  16.          }  
  17.        printf("%d\n",n);  
  18.         system("pause");  
  19.         return 0;  

改進版:

  1. #include<stdio.h>   
  2. #include<stdlib.h>   
  3. #include<math.h>   
  4. int main()  
  5. {  
  6.         int n,i;  
  7.         scanf("%d",&n);  
  8.         printf("%d=",n);  
  9.         while(n%2==0){  
  10.                                     printf("%d*",2);  
  11.                                     n/=2;  
  12.                                     }  
  13.         for(i=3;i<=sqrt(n);i+=2)  
  14.         {  
  15.            if(n%i==0)  
  16.            {  
  17.               n/=i;  
  18.               printf("%d*",i);  
  19.               i-=2;  
  20.        }  
  21.          }  
  22.        printf("%d\n",n);  
  23.            
  24.         system("pause");  
  25.         return 0;  
  26. }  

因為在所以的質數中只有2是偶數外,其他的質數都是奇數。所以i可以一次+2跳過所有的偶數。不過2要特別處理。

待續未完。相信還有更好的算法。

 

 

 

 

 

Copyright © Linux教程網 All Rights Reserved