方法一: 當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;
}
沒有留言:
張貼留言