当前位置:网站首页>C语言中求两数最大公约数的三种方法
C语言中求两数最大公约数的三种方法
2022-08-08 06:21:00 【Cxz_learn_C】
1.穷举法
思路:
首先对输入的两个数x,y判断两者的大小,取两者中较小的数放入i中。然后用x%i;y%i,如果两者都为0,则此时i为最大公约数。如果其中有一个不为0,则i减1后再用x,y分别模上i(注意此时的i为x,y中的较小值,并不为1),如果其中有一个不为0,则i继续减1,以此类推直到x%i,y%i,两者都为0,此时的i即为两数的最大公约数。
int main()
{
int x = 0;
int y = 0;
int i = 0;
scanf("%d %d",&x, &y);
//求得两者中的较小值
if (x > y)
{
//从i等于较小值开始循环
for (i = y; i >= 1; i--)
{
if (x % i == 0 && y % i == 0)
{
printf("最大公约数是:%d", i);
break;
}
}
}
//从i等于较小值开始循环
else
{
for (i = x; i >= 1; i--)
{
if (x%i==0&&y%i==0)
{
printf("最大公约数是:%d", i);
break;
}
}
}
return 0;2.更相相减法
思路:
首先将输入的两数a,b相减,等于0则最大公约数即为a=b,如果不等于0则进入循环。在循环中先判断两者大小,再将较大值减去较小值的出来值赋给较大值。然后再用新得出来的较大值与原较小值相减,如果不等于0则进入循环,以此类推,直到新得出来的较大值与原较小值相减为0,此时最大公约数即为新较大值=原较小值。
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
while ((a - b) != 0)
{
//判断两数大小
if (a > b)
{
//将较大值赋较大值减去较小值得出来的值
a = a - b;
}
else
{
//将较大值赋较大值减去较小值得出来的值
b = b - a;
}
}
printf("%d", b);
return 0;
3.辗转相除法
思路:
首先对输入的两数a,b判断大小,然后将较大值模上较小值得出值c。如果c等于0,则最大公约数即为a=b。如果c不等于0,则进入循环将原较小值赋给新较大值,将值c赋给新较小值,然后再将新较大值模上新较小值得出来的值赋给c,如果c还是不为0则再进入循环,以此类推,直到c等于0.此时最大公约数为a=b。
nt main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
//判断两者大小
if (a >= b)
{
//将较大值模上较小值得出来的值赋给c
int c = a % b;
//判断c是否为0
while (c != 0)
{
//将原较大值,原较小值分别赋值
a = b;
b = c;
//将较大值模上较小值得出来的值赋给c
c = a % b;
}
printf("最大公约数为:%d", b);
}
else
{
int d = b % a;
while (d != 0)
{
b = a;
a = d;
d = b % a;
}
printf("最大公约数为:%d", a);
}
return 0;
}边栏推荐
- Web Application Vulnerability Assessment with Zap and W3af
- flex布局属性简约速记
- flex布局缺点
- Disadvantages of flex layout
- 为什么有些参数reload就可以生效,而有些参数必须重启数据库?
- docker 安装 Redis 并配置持久化
- tkinter-TinUI-xml combat (7) PDF paging and merging
- 结合实践总结docker 安装 mysql5.7
- 刚学,这是怎么回事,SQL怎么转运错误啊
- Educational Codeforces Round 133 (Rated for Div. 2) C补题
猜你喜欢
随机推荐
Runtime——KVC,KVO原理
ValueError: Length of feature_names, 4 does not match number of features, 2 的解决方法
C-默认构造函数什么情况下才真正被合成
List扩容机制
YoloV4训练自己的数据集(一)
Key technologies for 4G/5G spectrum resource coordination
在AWS CodeBuild中更新Lambda导致进程被占用(status error 255)的解决方案
postgres 安装 14 版本出现错误提示解决办法
补坑 模拟散列表
开发两年,作为过来人的建议
APISIX Ingress v1.5-rc1 发布
2-SAT
遥远的救世主
“独家全新”MySQL进阶套餐,你确定不看吗?
探索数字安全中国方案
AttributeError: ‘GridSearchCV‘ object has no attribute ‘grid_scores_‘
使用C语言实现Hailstone序列
Kingbase ES创建过程,报错:PL/SQL block not end correctly
State Compression Review
【笔记工具】









