1. 程式人生 > >c語言經典題演算法1--用輾轉相除法求兩個數的最大公約數

c語言經典題演算法1--用輾轉相除法求兩個數的最大公約數

題目: 用輾轉相除法求兩個數的最大公約數

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b,r;

    scanf("%d %d", &a, &b);
    while (b != 0)//當其中一個數為0,另一個數就是兩數的最大公約數
    {
        r = a%b;
        a = b;
        b = r;
    }
    printf("最大公約數%d\n", a);
    system
("pause"); }

輾轉相除法:
目的:求兩個整數的最大公約數
最大公約數:能同時被兩個整數整除的最大公約數
原理:
最大公約數 = 小數 與 (大數%小數) 的最大公約數

利用這條原理,反覆執行,直到   大數%小數 = 0,此時較小的數就是原來兩數的最大公約數

例子:
105 252
252 % 105 = 42;
105 % 42 = 21;
42 % 21 = 0;
——即21為105與252的最大公約數
這種演算法比起用接連的數不斷迴圈找出最大公約數,會節省很多步驟,可以大大加快程式碼的執行速度

使用軟體:vs2013
執行結果:
這裡寫圖片描述