您好,欢迎访问三七文档
VB常用算法(五)约数因子--Tag:约数因子算法1、算法说明1)最大公约数:用辗转相除法求两自然数m、n的最大公约数。(1)首先,对于已知两数m、n,比较并使得mn;(2)m除以n得余数r;(3)若r=0,则n为求得的最大公约数,算法结束;否则执行步骤(4)(4)mnnr再重复执行(2)譬如:10与5分析步骤:m=10n=5r=mmodn=0所以n(n=5)为最大公约数24与9分析步骤:m=24n=9r=mmodn=6r≠0m=9n=6r=mmodn=3r≠0m=6n=3r=mmodn=0所以n(n=3)为最大公约数算法实现循环实现PrivateFunctionGCD(ByValmAsLong,ByValnAsLong)AsLongDimtempAsLongIfmnThentemp=m:m=n:n=tempDimrAsLongDor=mModnIfr=0ThenExitDom=nn=rLoopGCD=nEndFunction递归实现PrivateFunctionGCD(ByValmAsLong,ByValnAsLong)AsLongDimtempAsLongIfmnThentemp=m:m=n:n=tempDimrAsLongr=mModnIfr=0ThenGCD=nElsem=nn=rGCD=GCD(m,n)EndIfEndFunction2)最小公倍数m×n÷最大公约数3)互质数最大公约数为1的两个正整数解题技巧该算法需要识记!这种类型题目的扩展是约数和因子题型。2、实战练习1)补充代码(2003春二(9))给定一个十进制正整数,找出小于它并与其互质的所有正整数(所谓互质数是指最大公约数为1的两个正整数,下图是程序执行画面)。OptionExplicitPrivateFunctiongcd((1))AsIntegerDimrAsIntegerr=mModnIfr=0Thengcd=nElsem=n:n=r(2)EndIfEndFunctionPrivateSubCommand1_Click()DimnAsInteger,pAsIntegern=Val(Text1)Forp=n-1To2Step-1If(3)ThenList1.AddItempNextpEndSub2)编程题(2002秋上机试卷01)生成一个三行八列的二维数组A(3,8),其中前两行元素产生的方法是:用初值X1=26及公式Xi+1=(25×Xi+357)Mod1024,产生一个数列:X1、X2、......、X16。其中X1~X8作为A的第一行元素;X9~X16作为A的第二行元素;A的第三行元素值取前两行同列元素的最大公约数。最后按图示格式显示在图片框中。
本文标题:VB常用算法五
链接地址:https://www.777doc.com/doc-2865785 .html