《程序设计综合练习(二).ppt》由会员分享,可在线阅读,更多相关《程序设计综合练习(二).ppt(55页珍藏版)》请在优知文库上搜索。
1、程序设计综合练习(二)大学计算机教学部练习练习1:e(1)=e(2)=1,e(n)=(n-1)e(n-1)+(n-2)e(n-2),(n2),称为称为e数列,每一个数列,每一个e(n),n=1,2,)称为称为e数。求数。求1,30000 之内:之内:最大的最大的e数数(16687);e数的数目数的数目( 9 )。 程序:程序:lx1.prg set talk off clear store 1 to e1,e2 i=3n=2 do while .t. e3=(i-1)*e2+(i-2)*e1 if e3=30000 exit endif e1=e2 e2=e3 i=i+1 n=n+1 endd
2、o ?最大的最大的e数,数,e2=,e2 ? e的数目的数目=,n练习:练习:计算计算1,1000之间能被之间能被5和和7整除的数。求出(按整除的数。求出(按升序排列):升序排列): (1)第第20个这样的数。(个这样的数。(700) (2)前前20个这样的数之和。个这样的数之和。 (7350) 程序:程序:lx2.prg set talk off clear i=1 n=0 s=0 do while i2)求:)求: F(50)F(0)+F(1)+F(50) 程序:程序:lx3.prg set talk off clear store 1 to f0,f1,f2 i=3 sum=3 do w
3、hile i2)求求 F(0)到)到F(200)中:)中:()正数个数;()正数个数;()零的个数。()零的个数。 程序:程序:lx4.prg set talk off f0=1 f1=0 f2=1 i=3 zs=2 ls=1 do while i0 zs=zs+1 endif if f3=0 ls=ls+1 endif f0=f1 f1=f2 f2=f3 i=i+1 enddo ? 整数的个数是:整数的个数是:,zs ? 零的个数:零的个数:,ls set talk on return练习:已知:练习:已知:F(0)=F(1)=1F(2)=0F(N)=F(N-1)-2F(N-2)+F(N-3
4、)()(N2)求求 F(0)到)到 F(50)中的最大值和最小值。)中的最大值和最小值。 程序:程序:lx5.prg set talk off dime ff(51) ff(1)=1 ff(2)=1 ff(3)=0 i=4 do while i=51 ff(i)=ff(i-1)-2*ff(i-2)+ff(i-3) i=i+1 enddo kk=asort(ff) ? 最大值最大值=,ff(51) ? 最小值最小值=,ff(1) set talk on return练习:整数练习:整数36的质因子共有的质因子共有4个,它们是个,它们是2,2,3,3,求整数,求整数12903的最大质因子。的最大质
5、因子。 程序:程序:lx6.prg set talk off i=1 maxzs=2 do while imaxzs maxzs=i endif endif endifenddo ? 整数12903最大的质因子是:,maxzs set talk on return 练习:计算下列级数之值:练习:计算下列级数之值: 50 n=1 要求精确到小数点后第6位。_1_2n-1 程序:程序:lx7.prg set talk off clear set deci to 6 n=1 sum=0 do while n=50 sum=sum+1/(2*n-1) n=n+1 enddo ? sum is ,sum
6、 set talk on return练习:求练习:求100,999之间能被之间能被21整除的数的个整除的数的个 数。数。 程序:程序:lx8.prg set talk off n=0 for i=100 to 999 if int(i/21)=i/21 n=n+1 endif endfor ? n=,n set talk on return练习求出求出2,478以内的:以内的:(1)最大的素数最大的素数;(2)素数数目素数数目(3)所有素数之和。所有素数之和。 程序:程序:lx9.prgset talk offi=1zsmax=2zsgs=0zssum=0do while izsmax zs
7、max=i endif endifenddo? 最大的质数是:最大的质数是:,zsmax? 质数的数目:质数的数目:,zsgs? 所有质数之和:所有质数之和:,zssumset talk onreturn练习10 求求716539的的:(1)质因子个数;质因子个数; (2)最小质因子;最小质因子; (3)最大质因子。最大质因子。 程序程序:lx10.prg set talk off clear i=1 n=0 zyzmin=716529/2 zyzmax=2 do while i=716539/2 i=i+1 if int(716539/i)=716539/i flag=0 for j=2 t
8、o i-1 if int(i/j)=i/j flag=1 exit endif endfor if flag=1 loop else n=n+1 if izyzmax zyzmax=i endif endif endif enddo ? 质因子个数质因子个数=,n ? 最小质因子最小质因子=,zyzmin ? 最大质因子最大质因子,zyzmax set talk on return练习练习11 求满足:求满足:AB=716699,A+B 最小这最小这 两个条件的两个条件的 A和和 B。 程序:程序:lx11.prgset talk offa=0c=716700do while a=sqrt(7
9、16699) a=a+1 if int(716699/a)=716699/a b=716699/a else loop endif if a+bc c=a+b endifEnddoa=0do while a=sqrt(716699) a=a+1 if int(716699/a)=716699/a b=716699/a else loop endif if a+b=c ? 满足条件的满足条件的A,B 是:是: ,a,b endifEnddo练习练习12 求求1000,2000之间:之间: 最小的素数;最大的素数。最小的素数;最大的素数。 程序程序 lx12.prgset talk offclea
10、rzsmax=1001zsmin=1999for i=1000 to 2000 flag=0 for j=2 to i-1 if int(i/j)=i/j flag=1 exit endif endfor if flag=1 loop else if izsmax zsmax=i endif endifendfor? 最大的质数是:最大的质数是:,zsmax? 最小的质数是:最小的质数是:,zsminset talk onReturn练习练习13 若两素数之差为若两素数之差为2,则称该素数为,则称该素数为双胞胎数。求出双胞胎数。求出2,300之内:之内: 最大的一对双胞胎数;最大的一对双胞胎数
11、; 有多少对双胞胎数。有多少对双胞胎数。 程序: lx13.prgset talk offn=0aaa=2for i=2 to 300 if prime(i) .and. prime(i+2) n=n+1 if iaaa aaa=i endif endifendfor? 最大的一对双胞胎数是:,aaa,aaa+2? 双胞胎数的数目是:,nReturnfunction prime(num) flag=0if nummmax mmax=I endif endifendfor ? 最大的完全数是:,mmax? 完全数的数目是:,nreturn练习17 一自然数平方的末位与该数相同时,称此数为自同构数
12、。例如,由于 5的平方 = 25,则称5为自同构数。求出1,700以内的: 最大的自同构数;自同构数数目。 程序:lx18.prgset talk offn=0tmax=1for i=1 to 700 bb=i2 cc1=ltrim(str(i) cc2=ltrim(str(bb) <rim函数去掉前导空格 lenth=len(cc1) if right(cc2,lenth)=cc1 n=n+1 if itmax tmax=i endif endifendfor? 最大的同构数是:,tmax? 自同构数的数目是:,nset talk onReturn练习18 若某不含数字0的三位正整数,其
13、平方数至少有三位同样的数字,则称该三位数为三重数。例如 5112 = 261121 (有三位1),所以 511为三重数。求出: 按升序排列第10个三重数; 按升序排列前10个三重数之和; 所有三重数之和。 程序:lx18.prgset talk offn=0 sum=0for k=100 to 999 cc1=ltrim(str(k) if 0$cc1 loop endif bfs=k*2 cc2=ltrim(str(bfs) for i=0 to 9 cc3=ltrim(str(i) if at(cc3,cc2,3)#0 n=n+1 sum=sum+k if n=10 ? 第10个三重数是:
14、,k ? 前10个三重数之和是:,sum endif endif endforendfor? 所有三重数之和:,sumReturn练习19 满足下列两个条件: (1)千位数字与百位数字相同(非0),十位数字 与个位数字相同; (2)是某两位数的平方 的四位正整数称为四位平方数。例如:7744=882则称7744为四位平方数。求出: 所有四位平方数的数目; 所有四位平方数之和。 程序lx19.prgset talk offclearn=0ssum=0for k=10 to 99 bfs=k2 cc1=ltrim(str(bfs) lenth=len(cc1) if lenth=4 if subs
15、tr(cc1,1,1)=substr(cc1,2,1) and; substr(cc1,1,1)0 and substr(cc1,3,1)=substr(cc1,4,1) n=n+1 ssum=ssum+bfs endif endifendfor? 所有四位平方数的数目是:,n? 所有四位平方数之和是:,ssumset talk on return练习20 其平方等于某两个正整数平方之和的正整数称为弦数。例如,32 +42=52,因此5为弦数。求121,130之间:(1)弦数的数目(2)最小弦数(3)最大弦数 程序:lx20.prgset talk offclearn=0max=121min=130for k=121 to 130 flag=0 for i=1 to 130 for j=1 to 130 if i2+j2=k2 if kmax max=k endif if kmin min=k endif n=n+1 flag=1 exit endif endfor if flag=1 exit endif endfor endfor? 弦数的数目是:,n? 最大的弦数是:,max? 最小的弦数是:,minset talk onReturn