多倍長演算ライブラリ ルーチン16



[ 簡単な説明 ]

2数の最大公約数を求めます。アルゴリズムはユークリッドの互除法です。


プログラム・ソース("lgcd.c")           top (トップに戻る)
/*		lgcd.c		*/
#include "longint.h"

/* GCD */

LINT lgcd(LINT a, LINT b)
{
	LINT w, x;

	x.len = x.sign = 0;
	if(a.sign == -1 || b.sign == -1)
	{
		fprintf(stderr, "Error : Illegal parameter  in lgcd()\n");
		return x;
	}
	do
	{
		ldivide(a, b, &x);
		a = b;
		b = x;
	} while(b.len > 0);
	return a;
}