学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.65
所属科目:高中信息技术
《九章算术》中的“更相减损术”原为约分设计,也可用来求两个数的最大公约数,原文是“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”。其求最大公约数的具体步骤是:
第一步:任意给定两个正整数,判断它们是否都是偶数。若是,重复用2约简,直至两数不都是偶数,计算约掉的若干个2的乘积,执行第二步;
第二步:比较第一步中约简后的两数,以较大的数减去较小的数,接着把差与较小的数比较,并以大数减小数。继续这个操作直到所得的数相等为止;
第三步:计算第一步的约掉的2的乘积与第二步等数的乘积,该结果即为最大公约数。
示例:用“更相减损术”求104和260的最大公约数:
第一步:由于两者都为偶数,故用2约简得到52和130,再用2约简得到26和65,此时两者不都为偶数,故计约掉的2的乘积为4;
第二步:辗转相减65和26,65-26=39,39-26=13,26-13=13;
第三步:260和104的最大公约数为4×13=52。
实现程序如下,请在划线处①②③④填入合适的程序代码,实现程序功能。
(1)第一步采用如下fac1的函数,对任意两个正整数求约掉的2的乘积。请在划线处填入合适的代码。
def fac1(x,y):

fac=1

while ____:#①

x=x//2

y=y//2

fac=fac*2

return fac


(2)第二步采用如下fac2函数,输入约简后的两数,辗转相减。请在划线处填入合适的代码。
def fac2(a,b):

while a!=b:

if a<b:

a,b=b,a

____ #②

return a


(3)主函数main,使用fac1和fac2 函数求得最大公约数。请在划线处填入合适的代码。
def main(x,y):

ys1=fac1(x,y)

ys2=____#③获取第二步约数

return____#④


(4)主程序
x=int(input("请输入第一个整数:"))
y=int(input("请输入第二个整数:"))
print(x,y,"的最大公约数为:",main(x,y))
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交