求兩個數的最大公約數(列舉法與輾轉相除法)


最大公約數定義:把能夠整除某一個數的數,叫做這個數的約數。幾個數所公有的約數叫這幾個數的公約數。公約數中最大的一個叫做這幾個數的最大公約數。 例如:27和15,,27 的約數有1,27,3,9;15的約數為:1,15,3,5。而27 和15 的公約數為1,3.則最大公約數為3。

在了解了最大公約數后我們便可以從同時要被兩個數整除,且還是最大值可以想到一個比較麻煩的方法。

方法一:列舉法

用循環進行列舉依次排查,從1開始到它本身(這里的循環結束的表示可以在兩個數之間隨意選擇,只要可以取到它本身就可以),因為我們是從小到大依次排列過來的所以每次只要將可以整除的數字賦值給一個變量就可以,保證變量每次都會更新為最大值。

 

 1 #include<stdio.h>
 2 int main()  3 {  4     int a, b;  5     int j = 0;  6     printf("請輸入兩個整數:\n");  7     printf("a=");  8     scanf("%d", &a);  9     printf("b="); 10     scanf("%d", &b); 11     //這里從1開始依次排查,直到取到它本身為止 12     //循環可以保證每次取到的公約數依次增大
13     for (int i = 1;i <= b;i++) 14  { 15         if (a % i == 0 && b % i == 0) 16  { 17             j = i;//將公約數賦值給變量
18  } 19  } 20     printf("最大公約數為:%d", j); 21     
22     return 0; 23 }    

方法二:輾轉相除法

先將兩個整數a與b進行相除,如果余數為0(a%b==0),則b為兩數的最大公約數;如果不等於0,則將b賦值給a,將余數賦值給b,在對a與b進行相除,直到余數為0時終止(a%b==0),則b為最大公約數。

 1 #include<stdio.h>
 2 int main()  3 {  4     //方法二:輾轉相除法
 5     int a, b, i;  6     printf("請輸入兩個整數:\n");  7     printf("a=");  8     scanf("%d", &a);  9     printf("b="); 10     scanf("%d", &b); 11     i = a % b; 12     while(i != 0) 13  { 14         a = b; 15         b = i; 16         i = a % b; 17  } 18     printf("%d",b); 19     
20     return 0; 21 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM