迭代法:最大公约数

迭代法
迭代法是用计算机解决问题的一种基本方法,它让计算机对一组指令或一定步骤进行重复执行,在每次执行这组指令或这些步骤是都从变量的原值推出他的一个新值,用迭代法解决问题,要考虑迭代的初值、迭代的过程、迭代的结束或迭代的次数。(在我看来,简单地说就是运算过程中的变量的不断交替

典型例题:辗转相除法求 a、b的最大公约数可以用迭代法。 其中
(1)迭代的初值:被除数u=a,除数v=b。
(2)迭代的过程: r=u%v , u=v , v=r;
被除数、除数、余数的值辗转更新

代码实现:

#include<stdio.h>
int main()
{
	//求最大公约数以此来复习一下迭代法!
	//求最大公约数用的是辗转相除法,eg 123%23=8 23%8=7 7%8=7 8%7=1 7%1=0  所以最大公约数是1
	int a,b;
	scanf("%d %d",&a,&b);//需要求最大公约数的俩数
	int u=a,v=b,s=1;//被除数和除数赋值
	while(s!=0)
	{
		s=u%v;
		u=v;
		v=s;	
	} 
	 printf("%d",u);
	 return 0;
}

▲在确定输出值时要自己推演一下,比如此题,看起来是输出被除数v的值,但是在最后一边循环中v会被赋予s的值,即0,此时u的值才是真正要的最大公约数
因此在输出的时候要注意最终的值

▲循环条件中所用的变量要记得赋初值

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值