Я написал следующую программу, которая берет два числа из командной строки и возвращает gcd этих чисел.
#include <stdio.h>
int to_int(char *input)
{
return *input - '0';
}
int main(int argc, char *argv[])
{
if (argc < 2) return 1;
int a = to_int(argv[1]);
int b = to_int(argv[2]);
int i;
int result;
for (i = 1; i <= a && i <= b; i++) {
if (a%i==0 && b%i==0) {
result = i;
}
}
printf("%d\n", result);
return 0;
}
Однако, когда я даю ему числа 4 и 16, он возвращает ответ 1. Это неверно. НОД 4 и 16 равен 4. Однако я не могу найти, что не так с моим кодом. Другие примеры, которые я нашел в Интернете, похоже, используют тот же алгоритм, что и я (проверьте, делятся ли оба числа на i без остатка, и если да, то НОД равен i).
Может ли кто-нибудь указать мне на ошибку в моем коде?
if (argc < 2) return 1;
должно бытьif (argc < 3) return 1;
`argv[0] всегда является именем программы - person ryyker   schedule 19.12.2020