每天一道算法题目——最大公约数

原创 2016年06月02日 09:03:09
题目:求最大公约数
输入一组正整数(数量小于20),输出其最大公约数。
输入:121 33 44 11 1111
输出:11


基本思路:

先求前两个数的的最大公约数,再用这个公约数和第三个数求最大公约数,以此类推。。。。。。。。。。。


#include<iostream>
using namespace std;
int gcb(int a,int b);
int gcb2(int a,int b);

int main()
{
	int N,m1,m2;
	
	cout<<"你要输入多少个参数:";
	cin>>N;
	
	int *a=new int[N] ;
	
	for(int i=0;i<N;i++)
	{
		
		cout<<"请输入第"<<i<<"个参数的值:";
	 	cin>>a[i];
	 	
	 	cout<<endl;
	}
	
	
	m1=a[0];
	m2=a[1];
	for(int i=2;i<N;i++)
	{
		//cout<<m1<<"  "<<m2<<endl;
		m1=gcb(m1,m2);
		m2=a[i];
	}
	
	cout<<m1;

	return -1;

}

//  辗转相除法 
/*
有两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数

③ 若c≠0,则a=b,b=c,再回去执行①

例如求27和15的最大公约数过程为:

27÷15 余1215÷12余312÷3余0因此,3即为最大公约数
*/

int gcb(int a,int b)
{
	int c,m=-1;
	if(a<b)  //确保a 大于  b 
	{
		c=a;
		a=b;
		b=c;
		
	}
	
	while(m!=0)
	{
		m=a%b;
		a=b;
		b=m;

	}
	return a;	
}


//   相减法 

/*
有两整数a和b:

① 若a>b,则a=a-b

② 若a<b,则b=b-a

③ 若a=b,则a(或b)即为两数的最大公约数

④ 若a≠b,则再回去执行①

例如求27和15的最大公约数过程为:

27-15=12( 15>12 ) 15-12=3( 12>3 )

12-3=9( 9>3 ) 9-3=6( 6>3 )

6-3=3( 3==3 )

因此,3即为最大公约数*/

int gcb2(int a,int b)
{
	int temp;
	
	while(a!=b)
	{
		if(a>b)
			a=a-b;
		else
			b=b-a;
		
	}
	
	return a;
		
}


每日一道算法题——1

求字符串字串的长度。
  • q1242027878
  • q1242027878
  • 2017年02月07日 13:06
  • 520

每天一道算法题(33)——阿里巴巴之魔方翻转

题目:     阿里巴巴2015秋招机试题目: 一个三阶魔方由六个面组成,颜色分别是白色(W)、对面为黄色(Y)、红色(R)、对面为橙色(O)、绿色(G)、对面为蓝色(B)。如果手持魔方,白色向上,红...
  • qianhen123
  • qianhen123
  • 2015年08月23日 20:26
  • 789

每天一道leetcode题目_(1)

转眼就快要大四了,感叹时间飞快的同时也想开始追求一些新东西了,这次是本人第一次发表博客,各位大神看到请忽略。 leetcode上有这样一道题目,虽说难度不大,但第一次遇到的时候感觉挺新奇的,题目的要...
  • DAKESLON
  • DAKESLON
  • 2016年05月01日 10:44
  • 111

每天一道算法_7_Biorhythms

Description Some people believe that there are three cycles in a person's life that start the day he...
  • jason0539
  • jason0539
  • 2013年10月12日 20:08
  • 2576

每天一道算法_4_Hangover

此系列刚开始两天就被十一假期打断了,去山西玩了几天,今天刚回来,为了弥补一下心里的貌似隐隐作痛的愧疚感,补上一刀。 今天的题目是 Hangover,如下:   Description How f...
  • jason0539
  • jason0539
  • 2013年10月06日 21:44
  • 2101

每天一道算法题——

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 分析: 使用两个队列一个存放节点,一个存放值。先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右...
  • anascetic
  • anascetic
  • 2017年12月13日 22:45
  • 11

103 一道题目玩转指针数组和二级指针

C学习网:链接->C学习网 C训练网:链接->C训练网 请大家先看下面的代码: #include int main(){ char *lines[5] = { "...
  • czg13548930186
  • czg13548930186
  • 2017年06月06日 00:41
  • 1241

计算几何——最大三角形【HDU2202】

解题方法简单带过,主要看代码(写得丑,神犇勿喷)
  • wyh0410
  • wyh0410
  • 2016年09月18日 20:28
  • 159

每天一道算法_8_DNA Sorting

Description One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are...
  • jason0539
  • jason0539
  • 2013年10月30日 17:37
  • 2568

NYOJ 639-找规律【注意一下判断等比数列】

找规律 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述xiaod 在小学时最喜欢上数学课了,有一次上课,数学老师布置了一道题目:给你一组有规律的...
  • qq_29600137
  • qq_29600137
  • 2016年05月17日 20:11
  • 273
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:每天一道算法题目——最大公约数
举报原因:
原因补充:

(最多只允许输入30个字)