| 
 
 
 
 Легенда:
  новое сообщение 
  закрытая нитка 
  новое сообщение 
  в закрытой нитке 
  старое сообщение   | 
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
Новичкам также крайне полезно ознакомиться с данным документом.
|  |  |  | Примерно так  16.11.03 17:16  Число просмотров: 1396 Автор: amirul <Serge> Статус: The Elderman
 |  
| 
#include <stdio.h>
#include <stdlib.h>
void
main(int argc, char *argv[]) {
	unsigned long num1, num2;
	unsigned long n1, n2, temp;
	if (argc != 3) {
		printf("Usage: %d num1 num2\n", argv[0]);
		exit(-1);
	}
	num1 = atoi(argv[1]);
	num2 = atoi(argv[2]);
	if (num1 >= num2) {
		n1 = num1;
		n2 = num2;
	} else {
		n1 = num2;
		n2 = num1;
	}
	do {
		temp = n1;
		n1 = n2;
		n2 = temp % n2;
	} while (n2 != 0);
	printf("GCD(%d, %d) = %d\nLCM(%d, %d) = %d\n", num1, num2, n1, num1, num2, (num1 / n1) * num2);
}
---
 
 Практически нет защиты от дурака - на это не так важно, главное иллюстрация.
 |  | <programming> |  
| НОД  14.11.03 07:01 Автор: MadMan Статус: Незарегистрированный пользователь
 |  
| Подскажите решение программы на Си. Дано 5 натуральных чисел. найти их наибольший общий делитель.
 
 Спасибо.
 |  
|  | Рекомендую алгоритм Евклида.  14.11.03 09:39 Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
 |  
| > Подскажите решение программы на Си. > Дано 5 натуральных чисел. найти их наибольший общий
 > делитель.
 >
 > Спасибо.
 
 Беруться два числа и вычитается из большего меньшее до тех пор пока они не будут равны. Для пяти чисел соответственно нужно найти НОД первых двух, далее найти НОД результата первых двух с третим, и т.д. То есть НОД(Х1...Х5)=НОД(Х5,НОД(Х4,НОД(Х3,НОД(Х2,Х1)))).
 Есть еще одна версия нахождения НОДа: пока числа не сравняются наибольшее заменяется на остаток деления наибольшего на меньшее.
 |  
|  |  | Рекомендую алгоритм Евклида.  15.11.03 07:28 Автор: MadMan Статус: Незарегистрированный пользователь
 |  
| > Беруться два числа и вычитается из большего меньшее до тех > пор пока они не будут равны. Для пяти чисел соответственно
 > нужно найти НОД первых двух, далее найти НОД результата
 > первых двух с третим, и т.д. То есть
 > НОД(Х1...Х5)=НОД(Х5,НОД(Х4,НОД(Х3,НОД(Х2,Х1)))).
 > Есть еще одна версия нахождения НОДа: пока числа не
 > сравняются наибольшее заменяется на остаток деления
 > наибольшего на меньшее.
 
 но как это еще реализовать на Си, т.к. у меня еще не такие большие знания в Си
 но все равно спасибо...буду пытаться
 |  
|  |  |  | Примерно так  16.11.03 17:16 Автор: amirul <Serge> Статус: The Elderman
 |  
| 
#include <stdio.h>
#include <stdlib.h>
void
main(int argc, char *argv[]) {
	unsigned long num1, num2;
	unsigned long n1, n2, temp;
	if (argc != 3) {
		printf("Usage: %d num1 num2\n", argv[0]);
		exit(-1);
	}
	num1 = atoi(argv[1]);
	num2 = atoi(argv[2]);
	if (num1 >= num2) {
		n1 = num1;
		n2 = num2;
	} else {
		n1 = num2;
		n2 = num1;
	}
	do {
		temp = n1;
		n1 = n2;
		n2 = temp % n2;
	} while (n2 != 0);
	printf("GCD(%d, %d) = %d\nLCM(%d, %d) = %d\n", num1, num2, n1, num1, num2, (num1 / n1) * num2);
}
---
 
 Практически нет защиты от дурака - на это не так важно, главное иллюстрация.
 |  
 
 
 |  |