兩數求最大公約數的三種方法的C語言實現
阿新 • • 發佈:2019-01-25
任意輸入兩個數,求出二者的最大公約數,以C語言實現。以下是三種方法以及對應思路:
<2>相減法
<3>窮舉法
以上即為使用C語言以三種演算法計算兩數最大公約數。
<1>輾轉相除法。
定義兩個變數存放兩個數(a,b),先以冒泡法將較大數存放在在b內,較小數存放於a。
相除法的思路是:
1.b÷a取餘
2.判斷餘數是否為零,若為零,則最大公約數為a;不為零,則進行下一步
3.將a的值賦給b,餘數值賦給a。執行第一步。
轉換為C語言後,程式碼如下:
#include
void main()
{
int a,b;
int temp;
printf("請輸入兩個數,以空格分開:");
scanf("%d %d",&a,&b);
if(b
<2>相減法
定義兩變數a,b,具體思路如下:
1.先判斷a,b是否相等,若是,則直接輸出a;若否,則執行第二步。
2.判斷a是否大於b,若是,則a-b且將此式值賦給a;執行第一步;
若不是,則b-a且將此式值賦給b;執行第一步。
3.輸出a。
轉換為C語言後具體程式碼如下:
#include void main ( ) { int a, b; printf("請輸入兩個數,以逗號分割:\n"); scanf ("%d,%d", &a, &b); while ( a!=b) /*相減法*/ if (a>b) a=a-b; else b=b-a; printf("最大公約數為:%d\n", a); }
<3>窮舉法
定義變數a,b,i,具體思路如下:
1.判斷ab大小,將較小值賦給i;
2.判斷a÷i,b÷i是否都可以整除,若是,輸出i;若不是,執行第三步。
3.i--;執行第二步。
4.輸出i。
轉換為C語言後代碼如下:
#include int main() { int a,b; int i; printf("請輸入兩個數,以逗號分隔:\n"); scanf("%d,%d",&a,&b); if(a>b) /*將a,b中的較小數賦予i*/ i=b; else i=a; while( a%i!=0 && b%i!=0 )/*窮舉法*/ i--; printf("兩數的最大公約數為:%d\n",i); return 0; }
以上即為使用C語言以三種演算法計算兩數最大公約數。