1、统计1000-9999之间的所有满足以下条件的四位数的个数。该数是一个完全平方数,且其第1位与第3位数字之和为10,第2位与第4位数字之积为12。说明:一个整数是另一个整数的平方,就称称该数是完全平方数,例如:25=52,所以25是完全平方数。换言之,如果一个数的平方根是整数,那么这个数就是完全平方数。表达完全平方数的条件写法:sqr(i)=int(sqr(i)类似题型:编写程序,统计1000-9999之间的所有满足以下条件的四位数的个数。该四位数是一个完全平方数,且其第1、3位数字之和为6,第2、4位数字之积为24。3编程:一个数如果刚好与它所有的因子之和相等,则称该数为一个完数,如:6=1
2、+2+3,则6就是一个完数。求出200到500之间所有的完数之和。解决该类问题的关键是求一个数的所有因子,假设有一数为n,循环用从1到n-1的数去除n,如果能将n整除,则该数为n的因子。核心算法如下:s=0 for i=1 to n-1 if n mod i=0 then s=s+i 求因子之和next 类似的有已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好能被其因子数8整除,求正整数10,100之间有多少个正整数能被其因子的个数整除。124(穷举法)(x,y,z)满足方程:x2+y2+z2=552(注:要求 x y z),则(x,y,z)称为方程的一个解。试求
3、方程的整数解(包括负整数解)的个数。排列组合的问题,解答这种问题需根据题意先确实变量的取值范围,然后使用穷举法求解,一般使用ForNext的循环嵌套结构。求解本题:先设三个变量x,y,z。取值范围为:x(-55到55),y(-55到55),z (-55到55)满足条件为:x2+y2+z2=552,x z(注意在VB中必须写成x y and y z求方程9X-19Y=1,在|X|100,|Y|50内共有多少组整数解?5 已知A,B为正整数, AB, A*B=716699且要求A+B取最小值,求满足上述条件的A值。理解:首先当A和B最相近的时候A+B则取得最小值,也就是Sqr(716699)= 8
4、46.58076992098由于AB,所以B的循环范围大概在847到716699之间。 条件为:如果716699是B的公倍数,则输出A。并且第一个输出的则为所要的A值。For B = 847 To 716699 A = 716699 / B If 716699 Mod B = 0 Then Print A: Exit ForNext6(递推法)1、某一正整数,进行递减,每次将该数减半后再减一,当对该数进行第10次减半时发现该数只剩下1不能再减了,求该数。1534由于不知道第一天的,只知道第10天的,采用倒推即:第10天 n1=1 (第1次循环初值)第9天 n2=(n1+1)*2(第2次循环初值
5、)第8天 n3=(n2+1)*2 (第3次循环初值)。求第1天,则循环9次For i=1 to 9N=2*(n+1)Next Print 7 程序功能:求3,500内所有素数之和。程序中有一行错误,改正错误,使它能输出正确的结果。sum = 0For x = 3 To 500flag = TrueFor i = 2 To x - 1If x Mod i = 0 Thenflag = FalseExit ForEnd IfNext I下行有错误If not flag Thensum = sum + xNext xPrint sum8已知一个数列的前三项为0,0,1,以后各项都是其相邻的前三项之和
6、,求该数列前30项之和。 18947744参考程序一:(用数组)Dim f(30) f(1) = 0 f(2) = 0 f(3) = 1 s = 1最先要把前三项的和先加起来For i = 4 To 30 f(i) = f(i - 1) + f(i - 2) + f(i - 3) s = s + f(i) Print s参考程序2:裴波那契数问题其实是一种递推问题,由一个数列的前几项求出该数列的后一项。 Private Sub Command1_Click()F1 = 0F2 = 0F3 = 1s = 1 初值设为1 For i = 4 To 30 F4 = F1 + F2 + F3数列的表示
7、 F1 = F2 第二项变成下一次循环的第一项 F2 = F3 第三项变成下一次循环的第二项 F3 = F4 第四项变成下一次循环的第三项 s = s + F4累加和 Next i9编程:求10到200间的所有素数的个数以及和书上例4-22 P79素数就是数学当中的质数,判断一个数是不是素数,就是用除了1和它自己以外所有的数去除该数,如果都不能将其整除则该数为素数。求n是不是素数,就是循环用2到n-1(本身减1)的整数去除n,如果这之间有一个数能将n整除,那么可以确定该数不是素数,用exit for强制退出循环,如果在整个过程中都没有数能将其整除,循环全部走完,该数是个素数,并且i=n。核心算法如下。for i=2 to n if n mod i=0 then exit for next i if i= n then print 该数是一个素数!
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2