您的位置:首页 > 其它

壬戌日__求两个数最大公约数

2018-03-31 10:59 162 查看
求两个数的最大公约数(三种方法)
#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)

void common_measure(int x,int y)
{
//方法1
//int min = x > y ? y : x;//最大公约数<=较小数
//for (; min > 0; min--)
//{
//	if (0 == x%min && y%min == 0)
//	{
//		break;
//	}
//}
//printf("%d\n", min);
//方法2 辗转相减法
//while (1)
//{
//	if (x > y)
//	{
//		x -= y;//(eg:x,y,公约数T:x=nT;y=mT;(ifx>y) x-y==(n-m)T;x-=y:缩小T的个数直至'a'=='b'==T即找到最大公约数
//	}
//	else if (x<y)
//	{
//		y -= x;
//	}
//	else
//	{
//		break;
//	}
//}
//printf("%d\n", x);
//方法3 辗转相除法
while (x*y!=0)//此处条件是为了判断下面循环体中x,y(x,y中内容为余数),如有一个为零说明可以整除,即找到最大公约数
{
if (x > y)
{
x %= y;
}
else
{
y %= x;
}
}
int d = x == 0 ? y : x;
printf("%d\n",d);
}
int main()
{
int x, y;
while (1)
{
printf("请输入两个数\n");
scanf("%d%d", &x, &y);
common_measure(x, y);
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: