求两个正整数最大公约数

题目:运行最大公约数的常用算法,并进行程序的调式与测试,要求程序设计风格良好,并添加异常处理模块(如输入非法等)。

题目分析:此题目中分别用辗转相除法、穷举法、更相减损法以及stein法来对两个数的最大公约数进行计算,可用四个函数分别对这四个方法来进行实现,这四个方法主要部分均可用循环结构来进行实现。

以下为程序源代码:

#include 
#include "math.h"
using namespace std;
int divisor_1(int a,int b)/*辗转相除法*/
{
	int temp;
	if(a0)         /*循环让两个数按从大到小的顺序除[0,temp]上的数,直到这个数都能被他两整除*/
	{
		if(a%temp==0&&b%temp==0)
			break;
		else
			temp--;
	}
	return temp;          /*返回最大公约数*/
}
int divisor_3(int a,int b)/*更相减损法*/
{
	int i=0,s,temp;
	while(a%2==0&&b%2==0)/*计算a和b能约掉多少个2*/
	{
		a=a/2;
		b=b/2;
        i++;
	}
	if(a>=1;
			b>>=1;
			ans++;
		}
		else if((a&1)==0&&(b&1)!=0)
		{
			a>>=1;
			if(a>=1;
		else		
		{
			b=(a-b)>>1;
			a=a-b;
		}
	}
	return a<>a>>b;
	cout <<"四种方法求得的a和b的最大公约数分别为:"<

运行结果截图如下:

求两个正整数最大公约数_第1张图片

 

你可能感兴趣的:(求两个正整数最大公约数)