C++算法:三种方法求最大公约数和最小公倍数

三种方法求最大公约数和最小公倍数标题

首先明确最大公约数和最小公倍数的关系,设两个数为a,b;最大公约数为c,最大公倍数为d;
则ab=cd;怎么得到的可以通过数学算式证明。
分别用暴力搜索法,辗转相除法,更相减损法求最大公约数,求出最小公约数就求出了最小公倍数。

#include<iostream>
using namespace std;
int main()
{
	//变量a,b为所求的两个数,由键盘输入;c是最大公约数,i为控制循环变量的整数,
	//t为每种方法需要用到的整数 
	int a,b,c=0,i;
	cout<<"请输入两个整数,求它们的最小公倍数"<<endl;
	cin>>a>>b;
	
	
	for(a>b?i=b:i=a;i>=1;i--)					//暴力搜索法求公约数 
	    if(a%i==0&&b%i==0)
		  {
	    	c=i;
			break;
		  }		
	cout<<"暴力搜索法求解最小公倍数:"<<a*b/c<<endl;             
	  //根据最大公约数和最小公倍数之间的关系输出最小公倍数
	  
	  
	int t1=a,t2=b; 								//辗转相除法求公约数 
	while(t1%t2!=0)						    	//辗转相除循环 
	{		  
		  int t3=t2;
		  t2=t1%t2;
	      t1=t3;
		  	
	}
	c=t2;
	cout<<"辗转相除法求最小公倍数:"<<a*b/c<<endl;	



    int t4,t5;									//更相减损法求公约数 
	if(a>b)
	t4=a,t5=b;
	else 
	t4=b,t5=a;
	c=t4-t5;								//初始化公约数 
	while(t5!=c)
	{
		t5>c?t4=t5,t5=c:t4=c;			 
		c=t4-t5;					//相减
	}
	cout<<"更相减损法求最小公倍数:"<<a*b/c<<endl;	
	
	return 0;
	
}

猜你喜欢

转载自blog.csdn.net/weixin_44137260/article/details/88041311