程序(真题选_附部分答案)[1]

上传人:油条 文档编号:11457681 上传时间:2017-10-13 格式:DOC 页数:12 大小:161.50KB
返回 下载 相关 举报
程序(真题选_附部分答案)[1]_第1页
第1页 / 共12页
程序(真题选_附部分答案)[1]_第2页
第2页 / 共12页
程序(真题选_附部分答案)[1]_第3页
第3页 / 共12页
程序(真题选_附部分答案)[1]_第4页
第4页 / 共12页
程序(真题选_附部分答案)[1]_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《程序(真题选_附部分答案)[1]》由会员分享,可在线阅读,更多相关《程序(真题选_附部分答案)[1](12页珍藏版)》请在金锄头文库上搜索。

1、程序操作题一、特殊数字问题编程求所有的水仙花数。水仙花数是指这样的三位数,其各位数字的立方和等于该数本身。如: 13+53+33=153clear & 清理屏幕for i=100 to 999 & 判断的范围定围100到999a=int(i/100) & 分离出i的百位b=int(i/10)%10 & 分离除出i的十位c=i%10 & 分离出i的个位if i=a3+b3+c3 & 判断是否满足条件?i & 显示水仙花数的值endifendforretu(答案:153 370 371 407)回文数是指正读和反读都一样的正整数。例如1221是回文数。求出1000,9999以内的所有回文数的个数。

2、clear & 清理屏幕n=0 & 用来保存回文数的个数for i=1000 to 9999 & 判断的范围qw=int(i/1000) & 分离出i的千位bw=int(i/100)-qw*10 & 分离出i的百位sw=int(i/10)-int(i/100)*10 & 分离除出i的十位gw=mod(i,10) & 分离出i的个位if qw=gw and bw=sw &如果千位和个位相等并且十位和百位相等n=n+1 & 累加求和?n,i & 显示回文数的个数,值endifendfor (答案:90)同构数是指这样一个正整数,它出现在它的平方数的右边。例如 5 的平方是 25,5出现在其平方数2

3、5的右边,25 的平方是 625,25 出现在其平方数 625 的右边,因此 5 和 25 都是同构数。求2,1000之间同构数的个数。(提示:若x是m位同构数,则x的平方除以)(10的m次方的余数就是x 若x是m位同构数,则x的平方除以10的m次方的余数就是x)clearn=0for x=2 to 1000y=x*xm=len(ltrim(str(x) & 设x是m位数if mod(y,10m)=xn=n+1endifendfor? nretu (答案:6)若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数” 。例如:由于7396=862,且7

4、+3+9+6=25=52,则称7396是“四位双平方数”。求所有“四位双平方数” 的和。clears=0for i=1000 to 9999a=int(i/1000)b=mod(int(i/100),10)c=mod(int(i/10),10)d=mod(i,10)x=a+b+c+dif int(sqrt(x)*int(sqrt(x)=x and int(sqrt(i)*int(sqrt(i)=i&if sqrt(x)=int(sqrt(x) and sqrt(i)=int(sqrt(i) s=s+iendifendfor? sreturn (答案:81977)勾股数组(勾股弦数)是满足公式:

5、 A2+B2=C2 (假定ABC,求A,B,C均小于或等于100的倒勾股数有多少组?clear & 清理屏幕n=0 & 用来保存倒勾股数组的个数for a=1 to 100 & 判断的范围定为1到100for b=1 to a & 判断的范围定为1到ac=sqrt(1/a2+1/b2) & c的值为1/a2+1/b2开平方if 1/c=int(1/c) and sqrt(1/c)3exitendifendfor retu(答案:959)求出20677和42067的最大公约数cleara=20677b=42067for d=1 to aif mod(a,d)=0 and mod(b,d)=0ma

6、x=dendifendfor? maxreturn 答案: 713求出 9269 和 8671 的最小公倍数。(算法提示:a与b的最小公倍数是 a 的倍数中第1个被b整除的数。)cleara=9269b=8671for k=a to a*b step aif mod(k,b)=0exitendifendfor? kreturn(答案:268801)500之内能被3或7整除但不能被5和2整除,求满足以上条件的数的个数与他们的和。clearn=0 & 保存满足条件的个数s=0 & 保存满足条件的数的和for i=1 to 500if (mod(i,3)=0 or mod(i,7)=0) and m

7、od(i,2)!=0 and mod(i,5)!=0 & if (mod(i,3)=0 or mod(i,7)=0) and not (mod(i,2)=0 or mod(i,5)=0)& 判断是否满足“能被3或7整除但不能被2和5整除”n=n+1 & 计数器+1s=s+i & 累加求和endifendfor?n,s三、因子问题求559399的所有非平凡因子(即除1和它本身以外的约数)中最小的cleara=559399for n=2 to aif mod(a,n)=0?nexit endifendforreturn答案:73求出203267的所有真因子(即小于它本身的约数)中最大的因子数cle

8、ara=203267n=0for b=1 to a-1 if mod(a,b)=0 max=b endifendfor? max return利用分解质因数的方法求出18000中含有质因数的个数(相同的重复计数,例如,180中含有5个质因数:2、2、3、3、5)。set talk offclearx=18000n=0k=2do while x1if mod(x,k)=0n=n+1x=x/kloopendifk=k+1enddo? nset talk onreturn利用分解质因数的方法求出18000中的最大质因数(例如,180中最大质因数为5)。 set talk offset talk of

9、fcleara=18000max=1b=2do while a1if mod(a,b)=0max=b& ?ba=a/bloopendifb=b+1enddo? maxset talk onreturn某些分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子个位数和分母十位数同时去掉,所得结果正好等于原分数约分后的结果,例如16/64=1/4,求满足上述条件的所有真分数个数。clean=0for i=10 to 98for j=i+1 to 99a=int(i/10)b=mod(j,10)if i/j=a/b and bbj=i+2c=2d=int(sqrt(j)do while c

10、dn=n+1ma=i *存放最大的amb=j *存放最大的bendifendifendfor?n,”对”?最大的一对双胞胎数为:,ma,mb?最大的一对双胞胎数之和为:,ma+mbreturn若两个连续的自然数的乘积减 1 后是素数,则称这两个连续自然数为友数对,该素数称为友素数,如:2*3-1=5,因此2与3是友数对,5是友素数,求2,49之间有多少友数对。clean=0for i=2 to 48k=i*(i+1)-1flag=1for j=2 to sqrt(k)if mod(k,j)=0flag=0exitendifendforif flag=1n=n+1endifendfor ?n 如

11、果一个素数从个位开始自右向左逐个去掉每位数字后,每次所得的数都是素数,则称该数为超级素数,求100,999内超级素数的个数。clear n=0 & 超级素数个数S=0 & 超级素数和for i=100 to 999 & 判断的范围定围100到999if prime(i) and prime(int(i/10) and prime(int(i/100) & 如果i是素数并且i去掉个位是素数去掉十位是素数n=n+1 & 计数器加1s=s+i & 累加器加i? n,i & 显示超级素数的个数与值endifendfor?n,s function prime(x) &函数prime用来判断一个数是否为素

12、数如果一个素数其各位数字均不为0,而且从高位开始依次去掉每位数字后,每次所得仍为素数(1不是素数),则称该数为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有0。试求100,999之内的所有逆向超级素数的个数及和。clear n=0 & 超级素数个数S=0 & 超级素数和for i=100 to 999 & 判断的范围100到999if prime(i) and prime(mod(i,100) and mod(i,100)10 and prime(mod(i,10) and mod(i,10)!=0 *如

13、果i是素数并且i去掉百位是素数去掉十位是素数,且都不包含n=n+1 & 计数器加1s=s+i & 累加器加i? n,i & 显示逆向超级素数的个数与值endifendfor?n,sfunction prime(x)&函数prime用来判断一个数是否为素数function prime(x)do case case x=0 or x=1return(.f.)case x=2return(.t.)otherwisefor j=2 to sqrt(x)if x%j=0return(.f.)endifendforif jsqrt(x)return(.t.)endifendcase德国数学家哥德巴赫曾猜测

14、:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对。试求1234可以分解成多少种不同的素数对(注:A+B与B+A认为是相同素数对)clear & 清理屏幕c=0 & 用来保存素数对的个数a=1234 & 用变量来存放需拆分的数for i=2 to a/2 & 判断的范围定围2到a除以2if prime(i) and prime(a-i) & 如果i是素数并且a-i也是素数c=c+1 & 素数对的个数?c,int(i),int(a-i) & 显示素数对的个数,值endifendfor&函数p

15、rime用来判断一个数是否为素数function prime(x)for j=2 to sqrt(x)if x%j=0return(.f.)endifendforif jsqrt(x)return(.t.)endif五、数列问题编程求Fibonacci数列:1,1,2,3,5,8的第30个数,如下所示,求fib(30) fib(1)=1 n=1 F1=1fib(2)=1 n=2 F2=1 fib(n)=fib(n-1)+fib(n-2) n=3FN=FN-1+FN-2 set talk offclearf1=1f2=1for n=3 to 30f3=f1+f2f1=f2f2=f3endfor? f3set talk onreturn 求1!+3!+5!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号