- 算法案例
- 共287题
写出用更相减损之术求a、b最大公约数的程序.
正确答案
程序如下:
a="input " (“a=”);
b="input " (“b=”);
while a<>b
if a>=b
a=a-b;
else
b=b-a;
end
end
print(%io(2),a,“a、b最大公约数:”);
按照更相减损术求两数最大公约数的思想步骤,其关键是判断a、b的大小及a-b的大小,直到差为0为止.因此设计的算法程序中,须用到循环语句.
已知有一列数,,,…,,设计框图实现求该列数前20项的和.
正确答案
解:程序框图如图1或图2.
图1 图2
该列数中每一项的分母是分子数加1,单独观察分子,恰好是1,2,3,4,…,n,因此可用循环结构实现,设计数器i,用i=i+1实现分子;设累加器s,用s=s+,可实现累加,注意i只能加到20.
用秦九韶算法求多项式f(x)=x5+x4+2x3+x2+3x+1,当x=2时的值,画出程序框图,并写出相应的程序语句。
正确答案
解:根据秦九韶算法先把多项式改写为f(x)=((((x+ 1)x+2)x+1)x+3)x+1的形式,再由内到外计算多项式,当x=2时的值,程序框图如图所示:
程序如下:
用秦九韶算法求多项式f(x)=x6-2x5+3x3+4x2-6x+5,当x=2时的值。
正确答案
解:先将多项式f(x)改写成如下形式:
f(x)=x6-2x5+0·x4+3x3+4x2-6x+5
=(((((x-2)x+0)x+3)x+4)x-6)x+5,
v0=1,
v1=v0x-2=1×2-2=0,
v2=v1x+0=0×2+0=0,
v3=v2x+3=0×2+3=3,
v4=v3x+4=3×2+4=10,
v5=v4x-6=10×2-6=14,
v6=v5x+5=14×2+5=33,
∴当x=2时,多项式的值为33。
用秦九韶算法求多项式f(x)=1+x+0.5x2+0.16667x3+0.04167x4+0.00833x5,当x=-0.2时的值。
正确答案
解:根据秦九韶算法,把多项式改写成如下形式:
f(x)=((((0.00833x+0.04167)x+0.16667)x+0.5)x+1)x+1,
按照从内到外的顺序依次计算一次多项式当x=-0.2时的值:
v0=0.00833;
v1=0. 00833×(-0.2)+0.04167=0.040004;
v2=0.040004×(-0.2)+0.16667=0.1586692;
v3=0.1586692×(-0.2) +0.5=0.46826616;
v4=0.46826616×(-0.2)+1=0.906346768;
v5=0.906346768×(-0.2)+1=0.818730646,
∴当x=-0.2时,多项式的值为0.818730646。
求三个数324,243,135的最大公约数。
正确答案
解:辗转相除法:
∵324=243×1+81,
243=81×3+0,
∴324与243的最大公约数为81,
又135=81×1+54,
81=54×1+27,
54=27×2+0,
∴81与135的最大公约数为27,
∴三个数324,243,135的最大公约数为27,
更相减损术:
∵324-243=81,
243-81=162,
162-81=81,
∴81是324和243的最大公约数,
又135-81=54,
81-54=27,
54-27=27,
∴27是81与135的最大公约数,
∴三个数324,243,135的最大公约数为27。
将八进制数314706(8)化为十进制数。
正确答案
解:314706(8)=3×85+1×84+4×83+7×82+0×81+6 ×80=104902(10)。
对于求18的所有正约数,请设计两种算法。
正确答案
解:算法1分别对1,2,3,…,18逐一检验,
第1步:1是18的正约数,将1列出;
第2步:2是18的正约数,将2列出;
第3步:3是18的正约数,将3列出;
第4步:4不是18的正约数,将4删除;
…
第18步:18是18的正约数,将18列出;
算法2:对18进行因数分解,
第1步:18=2×9;
第2步:18=2×32;
第3步:列出18的所有正约数:1,2,3,32,2×3,2×32。
求24和32的最小公倍数。
正确答案
解:利用更相减损术求出24和32的最大公约数:
(24,32)→(24,8)→(16,8)→(8,8),
∴24与32的最大公约数为8,
∴24与32的最小公倍数为24×32÷8=96。
古时候,当边境有敌人来犯时,守边的官兵通过在烽火台上点火向境内报告,如图,烽火台上点火表示 数字1,未点火表示数字0,约定二进制数对应的十进制数的单位是1000,请你计算一下,这组烽火台表示有多少敌人入侵?
正确答案
解:由图可知这组烽火台表示的二进制数为11011(2),它表示的十进制数为27,由于十进制数的单位是1000,所以入侵的敌人的数目为27×1000=27000。
扫码查看完整答案与解析