004 最大公約數

Gloria_m666發表於2019-01-22
/*輾轉相除法:如果b等於0,計算結束,a就是那個最大公約數,
否則,計算除以b的餘數,讓a等於b,而等b於那個餘數;
回到第一步。
  
a	b	t
12	18	12
18	12	6
12	6	0
6	0
*/
/*輾轉相除法*/
#include<stdio.h>
int main(){
	int a,b;
	int t;
	scanf("%d %d",&a,&b);
	a = 12;b = 18;
	while(b != 0)
	{
		t = a%b;
		a = b;
		b = t;
		printf("a = %d,b = %d,c = %d\n", a,b,t);
	}
	printf("acd = %d\n", a);

	return 0;
}
/*列舉法
設t為2;
如果u和v都能被t整除,記下這個t
t+1後重復第二步,直到t等於u或者u等於v
那麼,曾經記下的最大的可以同時整除u和v的t就是gcd
*/
#include<stdio.h>
int main(){
    int a,b;
    int min;
    scanf("%d %d",&a,&b);
    if(a<b){
        min = a;
    }else{
        min = b;
    }
    int ret = 0;
    int i;
    for(i = 1;i < min;i++){
        if(a%i == 0){
            if(b%i == 0){
                ret = i;
            }
        }
    }
    printf("%d和%d的最大公約數是%d",a,b,ret);
    return 0;
}










相關文章