C++最大公約数と最小公倍数を求める


常用アルゴリズム:転がり相除算法は2つの自然数の最大公約数を求める方法であり、ユークリッドアルゴリズムとも呼ばれる.
転がり相除法の原理は以下の通りである.
例えば、求める(319377):

319÷377=0(残り319)
∴(319,377)=(377,319);
⑪377÷319=1(残り58)
∴(377,319)=(319,58);
⑪319÷58=5(残り29)
∴ (319,58)=(58,29);
⑪58÷29=2(残り0)
∴ (58,29)= 29;
∴ (319,377)=29.
相を転がすことによって最大公約数が得られ,しばらくこの方法が考えられる.後で補充して、忘れないようにします.最小公倍数を求めるのはこれです
2つの数の積を最大公約数で割ると、つまり、肝心な問題はどのように最小公約数を求めるかです.C++コードは以下の通りです.
<span style="font-family:Times New Roman;">#include<cstdio>
   #include<cassert>
   #include<cmath>
   int main(){
	long  numA,numB,temp,mul;
	scanf("%d %d",&numA,&numB);
	if(numA<numB){
		temp=numA;
		numA=numB;
		numB=temp;
	}

	mul=numA*numB;
	while(numA%numB){
		temp=numA%numB;
		numA=numB;
		numB=temp;
	}
	printf("     :%d
",mul/numB); printf(" :%d
",numB); return 0; }</span>