iT邦幫忙

2023 iThome 鐵人賽

0
自我挑戰組

C語言精讀研習系列 第 46

使用for或while迴圈or遞迴函式來求出GCD與LCM

  • 分享至 

  • xImage
  •  

完整程式碼

#include <stdio.h>

int main(void){
	int A, B, i, gcd;
	scanf("%d %d", &A, &B);
	for(i=A; i>=1; i--){
		if(A%i == 0 && B%i ==0){
			gcd = i;
			break;
		}
	}
	printf("%d\n", gcd);
	printf("%d", A*B/gcd);
	
	return 0;
}

While迴圈解

#include <stdio.h>

int main(void){
    int a, b, r, num1, num2;

    scanf("%d %d", &a, &b);
    num1=a; num2=b;

    while(b!=0){
        r = a%b;
        a = b;
        b = r;
    }
    printf("%d\n%d", a, num1*num2/a);
    return 0;
}

遞迴函式

#include <stdio.h>
int gcd(int a, int b);
int lcm(int a, int b);
int main(void){
    int a, b;

    scanf("%d %d", &a, &b);

	printf("%d\n",gcd(a,b));
 	printf("%d",lcm(a,b));
 	
 	return 0;
}
// GCD, LCM 遞迴函式
int gcd(int a, int b){
 	if(b==0){
 		return a;
 	}else{
 		return gcd(b, a%b);
    }
}int lcm(int a, int b){
 	return (a*b/gcd(a,b));
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20240328/20160744EnNHOJcXjY.png

參考資料:TQC+ C第2版


上一篇
輸出格式的「參數」控制輸出的「對齊方式」與「長度」
下一篇
C語言解數字相乘暨2進制轉10進制
系列文
C語言精讀研習47
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言