01/10/2018, 17:45

Không thoát được vòng lặp C

Chào các anh chị, xin các anh chị kiểm tra giúp e sao nó không thoát được vòng for

#include <stdio.h>
void main()
{
	int a, b;
	int x, y, bscnn;
	int giatri=0;
	printf("Nhap so nguyen a = ");
	scanf("%d", &a);
	printf("Nhap so nguyen b = ");
	scanf("%d", &b);
	for (int i = 1; giatri!=1; i++)
    	{
    		    x = a*i;
        		for (int n = 1; b<a; n++)
        		{
        			y = b*n;
        			if (y == x)
        				giatri = 1;
        		}
        		if (giatri == 1)
        		{
        			bscnn = y;
        			break;
    		}
    	}
	printf("Boi so chung nho nhat cua a va b la: %d
", bscnn);
}
Phạm Vinh viết 19:54 ngày 01/10/2018

cứ giả sử b bé hơn a, trong vòng lặp for thứ 2 bạn đang kiểm tra xem b có phải bội số của a không. Nếu không thì vòng lặp cứ tiếp tục. bạn nên dùng điều kiện b*n<x thì hợp lý hơn

newbieIT viết 19:51 ngày 01/10/2018

cám ơn anh nhiều nha

Hung viết 19:56 ngày 01/10/2018
lcm(a,b) = a*b / gcd(a,b)

gcd(a,0) = a
gcd(a,b) = gcd(b,a mod b)
gcd(a,b) = gcd(b,a)
int gcd(int a, int b)
{
  if (b == 0) return a;
  if (a < b) return gcd(b,a);
  return gcd(b, a%b);
}

int lcm(int a, int b)
{
  return a*b / gcd(a,b);
}
Bài liên quan
0