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



[ 簡単な説明 ]

3数以上の最大公約数を求めます。各数値は、配列で渡します。( n は要素数です。)
スレーブルーチンとして、lgcd( )を使用します。


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

LINT llgcd(LINT *a, int n)
{
	LINT gcd, w;
	int j;

	gcd.sign = gcd.len = 0;
	for(j = 0; j < n; j++)
	{
		if(a[j].len > 0)
		{
			gcd = a[j];
			gcd.sign = 0;
			j++;
			break;
		}
	}
	for(; j < n; j++)
	{
		w = a[j];
		if(w.len > 0)
		{
			w.sign = 0;
			gcd = lgcd(gcd, w);
		}
	}
	return gcd;
}