算法案例(3)分层训练1、阅读下列代码,写出该代码的运行结果p←20m←2dop←p-mm←m+3UntilmpPrintm思考运用2.设计求解不定方程12311122311120xxxxx(1212,,,{1,1}xxx)的一个算法,(提示:可用循环语句或条件语句)3.判断某年是否为闰年,要看此年份数能否被4整除,但又不能被100整除;或者看此年份数能否被400整除。画出上述算法的流程图,并写出伪代码。4.函数2xy与xy2有三个交点(x1,y1),(2,4),(4,16),其中-1<x1<0。试用二分法求出x1近似值(误差不超过0.01)。5、求满足不等式:1×2×3×┅×I10000的最大正整数I,写出代码。6、求出平方数小于1000的所有正整数的和,并写出代码。探究拓展:7.要判断一个数x是否为质数,我们可以把它分别除以从2到x-1的每一个整数,如果都除不尽,则x为质数。要判断a是否能被b整除,只要看a/b是否等于Int(a/b),若相等则能整除。下面是寻找3~100之内质数的一个算法的伪代码:10ForxFrom3To10020ForIFrom2Tox-130IfInt(x/i)=x/iThenGoTo1040EndFor50Printx60EndFor实际上,上述算法的运算次数较多,可以加以改进,首先,偶数不可能是质数,因此第1行的步长可改为2,其次,第2行中的x-1可以改为x(为什么?)。写出改进后的伪代码,你有寻找质数更好的方法吗?8.满足方程222cba的一组正整数称为勾股数或商高数,试设计一个满足a≤30,b≤40,c≤50的勾股数的算法(写出算法步骤,画出流程图)。9、输入一个数,将该数反向输出(如1234→4321)。写出一个解决该问题的算法,并用伪代码表示。本节学习疑点:习题5.4.3答案1、112、使用循环的嵌套,代码略。学生质疑教师答复开始输入y3、ReadyIfMod(y,4)≠0ThenPrinty是平年ElseIfMod(y,100)≠0ThenPrinty是闰年ElseIfMod(y,400)=0ThenPrinty是闰年ElsePrinty是平年EndIf4、略5、s=1I=1Whiles10000s←s×ii←i+1EndWhilePrinti-16、i←1s=0Whilei21000s←s+ii=i+1EndWhilePrints7、用一个指针在循环内记录,如果Int(x/i)=x/i,就退出循环。8、流程图略ForaFrom1To30ForbFroma+1To40ForcFromb+1To50If222cbaThenPrinta,b,cEndForEndForEndFor9、S1a←1234;b←0S2当a不等于0时,执行S3,否则转S6。S3b←b×10+Mod(a,10)S4a←(a-Mod(a,10))/10S5转S2S6输出b,程序结束。a←1234b←0Whilea0b←b×10+Mod(a,10)a←(a-Mod(a,10))/10EndWhilePrintb