Я написал этот код, чтобы получить gcd в c. Он отлично работает при малых числах , но когда я попробовал 60 и 90, например, я получил 2, при получении 3 для 9 & 6.GCD логическая ошибка
#include "stdio.h"
#include "stdlib.h"
int main()
{
int a,b,x,gcd;
printf("Please Enter the fraction");
scanf("%d", &a);
scanf("%d", &b);
if(b%a == 0)
gcd =a;
else
{
x=a;
while(--x>1)
{
if (a%x == 0 && b%x==0)
{
gcd =x;
}
}
}
printf("GCD = %d", gcd);
return 0;
}
Как обычно, лучшие улучшения исходят от выбора лучшего алгоритма. В этом случае вы должны использовать алгоритм Евклидов для GCD: http://en.wikipedia.org/wiki/Euclidean_algorithm – DrKoch