关于最大公约数的算法
int gcd(int a,int b)
{
int t = 0;
int c = 0;
if(a==0)
return b;
if(b==0)
return a;
if(a < b)
{
t=a;
a=b;
b=t;
}
c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
return b;
}
--------------------------------------------------
c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
为什么这么算能得出结果?求解释
人气:272 ℃ 时间:2020-05-23 20:50:42
解答
这是贪心算法.设最大公约数为X,则存在整数i,j使得:a = i*X,b = j*X又因为c = a % b 所以存在整数k使得:c = a-k*b = i*X - k*j*X = (i-j*k)*X即X也是c的公约数,然后a = b; b = c;如此循环,总有b = k*a的时侯,这时b...
推荐
猜你喜欢
- a-b=3,ab=10.求a.b的平方和
- 已知y+2与x成正比且x=-2时y=0(1)求y和x的解析式(2)画出函数图象(3)若点(m,6)在该图像上求m的值
- --Excuse me,could you tell me( ) --Sorry,I'm new here,too.
- 若x2+y2−x+4y+17/4=0,求(2x+y)(2x-y)-(2x-y)2的值.
- 物理电学综合题一道
- 全站仪精平.粗平过后的具体步骤.我知道的就是把水准管平行于任意两个角螺旋,使水准管气泡居中.然后转动90度,调整第三个角螺旋,使水准管气泡居中.在转动90度就不知道调整那个角螺旋了.(比如平行角螺旋1和2,调平过后.转动90度后调整 角螺旋
- 知了在树上叫,就像( ). (比喻句
- 用直接开平方法解下列方程