Tìm UCLN & BCNN của số nguyên âm

Chào cả nhà!
Cho em hỏi là: Em muốn tìm UCLN && BCNN của số nguyên âm thì thế nào ạ, em nhập số âm thì nó không chạy nữa.
Xin mọi người giúp đỡ.
Em cảm ơn.

//de bai: nhap x,y tim uoc so chung lon nhat va boi so chung nho nhat cua 2 so va in ra.
#include <stdio.h>
int main(){
	int i,x,y,max,boiChung,uocChung,so=1;
	printf("Nhap X: ");
	scanf("%d",&x);
	printf("Nhap Y: ");
	scanf("%d",&y);
	
	if(x>0 && y>0){
		if(x>y){
			max=x;
		}else{
			max=y;
		}
		for(i=1;i<=max;i++){
			if(x%i==0 && y%i==0){
				uocChung=i;
			}
		}
		printf("UCLN cua %d va %d la %d\n",x,y,uocChung);
		
		while(so>0){
			if(so%x==0 && so%y==0){
				boiChung=so;
				printf("BCNN cua %d va %d la %d",x,y,boiChung);
				break;
			}
			so++;
		}
	}
	return 0;
}

Nhớ lấy trị tuyệt đối :smiley: vì sự thật là tính chia hết thì dấu không quan trọng :slight_smile:

Thực ra bài này dùng thuật toán Euclid cho gọn đẹp :smiley:

4 Likes

euclid nghe lạ quá anh ạ. Chắc em chưa học tới.

Nôm na là d | a && d | b <=> d | (b-a), vậy thay b bằng b-a
sau này thấy số chênh lệch thì rút gọn thành chia lấy dư.

d | gcd(a, b) <=> d | a && d | b <=> d | (a-b) && d | a <=> d | gcd(a-b, a) => gcd(a-b, a) = gcd(a, b).

3 Likes

Bạn ơi bạn sửa được code chưa? Mình gặp vấn đề y chang ạ, nhập số âm code không chạy

Code không chạy là như thế nào? Bạn đăng code lên đây được không?

Đăng code của bạn lên đây dưới dạng text theo hướng dẫn:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?