Я пытаюсь написать программу на C. Программа должна найти НОД (наибольший общий делитель) заданного массива. Я пытаюсь использовать наименьшее число массива, чтобы найти НОД. Мне было интересно, что не так с моим последним циклом. Я не придумал, как проверить, дает ли деление какие-либо десятичные точки, чтобы остановить цикл. это мой код
#include <stdio.h>
#include <stdlib.h>
int main()
{
int A[10]={112, 160, 180, 240, 288, 32, 480, 96, 60, 72};
int i;
int j;
int minimum = A[0];
int GCD;
int temp;
for (i=1;i<9;i++)
{
if( A[i] < minimum)
{
minimum = A[i];
}
}
for (i=1; i < minimum/2; i++)
{
for (j = 0; j < 9;j++)
{
GCD = 2*i;
temp = ((A[j])/(GCD));
int check = temp%1;
if (check == 0)
break;
}
}
printf("The Greates Common Denominator is: %d", GCD);
return 0;
}
temp % 1
всегда будет равно нулю. - person Jonathan Leffler   schedule 15.01.2014int
переменных, не будет никаких «десятичных чисел» (при условии, что вы имеете в виду дробные числа). - person Jonathan Leffler   schedule 15.01.2014int g = a[0]; for (i = 1; i < 10; i++) { g = gcd(a[i], g); }
должно работать нормально (гдеgcd()
— это функция для вычисления НОД двух чисел. - person Jonathan Leffler   schedule 15.01.2014