информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetГде водятся OGRыСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Рекомендую алгоритм Евклида. 14.11.03 09:39  Число просмотров: 1400
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Подскажите решение программы на Си.
> Дано 5 натуральных чисел. найти их наибольший общий
> делитель.
>
> Спасибо.

Беруться два числа и вычитается из большего меньшее до тех пор пока они не будут равны. Для пяти чисел соответственно нужно найти НОД первых двух, далее найти НОД результата первых двух с третим, и т.д. То есть НОД(Х1...Х5)=НОД(Х5,НОД(Х4,НОД(Х3,НОД(Х2,Х1)))).
Есть еще одна версия нахождения НОДа: пока числа не сравняются наибольшее заменяется на остаток деления наибольшего на меньшее.
<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);
}

---

Практически нет защиты от дурака - на это не так важно, главное иллюстрация.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach