2013年10月16日 星期三

最大公因數 (輾轉相除法) by c programming

方法一: 當A B 此兩數要找最大公數,最簡單最直覺得就是,哪一個數比較小,
             就開始一直遞減找下去

例一:   40,6所以6比較小 ,然後用6下去除兩數看是否整除,不行則用5 然後4  .....直到2


方法二:輾轉相除法!!!

因為會一直取另外一個數去%另外一數,直到另一數為0
所以只要兩數都大於0則一直轉下去!!!




程式碼:

 #include <stdio.h>
#include <stdlib.h>
int gcd (int a ,int b);
int gcd2 (int a, int b);
int main()
{
    int answer,answer2;

    int num1= 189;
    int num2= 9;

    answer= gcd(num1,num2);
    answer2= gcd2(num1,num2);

    printf("answer: %d \r\n",answer);
    printf("answer2: %d \r\n",answer2);

    return 0;
}

int gcd (int a ,int b)
{
    int d,temp;
    if(a >b)
        temp=b;
    else
        temp=a;


    for(d=temp;!(a%d==0 && b%d==0);d--);

    return d;

}

int gcd2 (int a, int b)
{
    while(a>0 && b>0)
    {
        if(a>b)
            a=a%b;
        else
            b=b%a;
    }

    if(a==0)
        return b;
    else
        return a;
}

沒有留言:

張貼留言