Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 13:59   #1
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
Восклицание Расширенный алгоритм Евклида

Написал программу для нахождения НОД через алгоритм Евклида.
Сделал нахождение представления НОД вида d=a*v+b*u:

Код:
void alg_evclid(long int a, long int b, long int *x, long int *y, long int *d)
{	/* calculates a * *x + b * *y = gcd(a, b) = *d */
	long int q, r, x1, x2, y1, y2;
	if (b == 0) //если один из множителей равен 0
	{
		*d = a, *x = 1, *y = 0;
		return;
	}
	x2 = 1, x1 = 0, y2 = 0, y1 = 1;

	while (b > 0) 
	{
		q = a / b; 
		r = a - q * b;
		*x = x2 - q * x1; 
		*y = y2 - q * y1;
		//промежуточный вывод
		printf("\n%d=%d*%d+%d",a,b,q,r);
		a = b; b = r;
		x2 = x1; x1 = *x; y2 = y1; y1 = *y;
		
	}	//end while (b>0)

	*d = a, *x = x2, *y = y2;
}	//end alg_evklid
Основу этого фрагмента кода взял отсюда:
Расширенный алгоритм Евклида
Кто может разъяснить как находится представление НОД ?
поэтапно, если можно?
<--<--<--Нажми на весы слева <---<---<---

Последний раз редактировалось Fantom.as; 17.11.2010 в 14:17.
Fantom.as вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расширенный алгоритм Евклида для нахождения НОД. Fantom.as Помощь студентам 5 15.11.2010 14:59
алгоритм Евклида на паскале mTl Помощь студентам 0 28.12.2009 12:55
Алгоритм Евклида.Нахождение НОД innaa639 Помощь студентам 11 24.11.2009 00:17