1、趣味VisualFoxPro程序设计集锦-趣味Visual FoxPro 程序设计集锦5舍罕王的失算set talk offinput请输入n:to n|t=1s=1for i=2 to nt=t*2s=s+tendforv=s/h=(9/*v)(1/3)、总麦粒数约为:+str(s,10,3)+粒.折合体积约为:+ltrim(str(v,15)+立方米堆成正圆锥高约为:+str(h,5)+米return程序运行结果与说明请输入n:64总麦粒数约为:+019折合体积约为立方米堆成正圆维高约为7193米5-1失算的另一名题:买马灯input请输入n: to nt=1s=1for i=2 to n
2、t=t*2s=s+t、endfor共需花费+ltrim(str(s,16)+个包卢斯卡.合约+str(s/400,10,4)+卢卡.return程序运行结果与点评请输入n:24共需花费1677215个外包卢斯卡合约卢布、6分数不等式求n1+1/2+1/3+1/4+.+1/minput 请输入n:to ni=0s=0do while sn(i=i+1s=s+1/ienddoc=i%do while sn+1i=i+1s=s+1/ienddo!d=i-1满足不等式的m为:+ltrim(str(c,10)+m+ltrim(str(d,10)return程序运行结果:)求n1+1/2+1/3+1/4.
3、+1/mn+1的正整数m请输入n:10满足不等式的m为:12367m33616请输入n:15】满足不等式的m为:1835421m49891907阶乘与阶乘和数set talk off三位阶乘和数有:。for m=100 to 999a=int(m/100)b=mod(int(m/10),10)c=mod(m,10)if m=jc(a)+jc(b)+jc(c)mendifendforreturnfunc jcpara xp=1*for i=1 to xp=p*iendforreturn p、程序运行结果:三位阶乘和数有:145可见145是唯一的三位阶乘和数8综合高精度计算cleardime a(
4、500)a=0 1:计算阶乘n!【 2:计算乘方mn 3:计算排列数A(n,m)input 选择(1-3): to zinput 请输入正整数n: to nif z#1input 请输入正整数m (m=n): to mendifd=500;t=1if z=3t=n-m+1endifa(1)=1for i=t to nif z=2b=m|elseb=iendiff=0*for j=1 to dx=a(j)*b+ff=int(x/10)a(j)=x%10endforendforj=ddo while a(j)=0)j=j-1enddof=jdo case)case z=1 str(n,8)+!=c
5、ase z=2 str(m,6)+ltrim(str(n)+=$case z=3 A(+ltrim(str(n)+,+ltrim(str(m)+)=endcased=0-for j=f to 1 step -1d=d+1 str(a(j),1)if d%50=0;space(10)endifendfor 所得结果共+ltrim(str(f)+位|return运行程序,选择3,输入n=100,m=90,得A(100,90)=0000000000000000000所得结果共152位。10最大公约数与最小公倍数set talk offinput 输入正整数a: to ainput 输入整数b: to
6、 b、st=ltrim(str(a,12)+,+ltrim(str(b,12)m=a*br=mod(a,b)do while r#0-a=bb=rr=mod(a,b)enddo(+st+)=+ltrim(str(b,15)(+st+)=+ltrim(str(m/b)return运行程序,输入1104,1272得?(1104,1272)=241104,1272=5851211水仙花数set talk off.input 输入正整数a: to ainput 输入整数b: to bst=ltrim(str(a,12)+,+ltrim(str(b,12)m=a*b-r=mod(a,b)do while
7、 r#0a=bb=r.r=mod(a,b)enddo(+st+)=+ltrim(str(b,15)(+st+)=+ltrim(str(m/b)return运行程序,得水仙花数:153 370 371 40712勾股数set talk offinput请输入区间下限值: to m1inpu 请输入区间上限值: to m2区间+ltrim(str(m1)+,+ltrim(str(m2)+中的勾股数组有:n=0for a=2 to sqrt(m2)for b=1 to a-1if(a+b)%2=0,b=b+1endift=0for k=2 to b(if b%k=0 and a%k=0t=1endi
8、fendfor!if t=0d=a*a-b*be=2*a*bf=a*a+b*bfor i=1 to m2/fx=i*dy=i*ez=i*fif xm1 or ym2loopendifstr(x)+str(y)+str(z)?n=n+1endforendifendforendfor共+ltrim(str(n)+组勾股数.return运行程序,求得10,30中的勾股数:区间(10,30)中的勾股数组有:12 16 2015 20 2518 24 3010 24 2621 20 2913完全数set talk off%input x= to xinput y= to y 区间+ltrim(str(x
9、)+,+ltrim(str(y)+中的完全数:n=0for a=x to ys=1for k=2 to a/2if a%k=0&s=s+kendifendforif s=a)n=n+1str(n,3)+:+ltrim(str(a)+-1for k=2 to a/2if a/k=int(a/k) +ltrim(str(k,5)endifendforendifendforreturn运行程序,输入X=2,Y=100,得区间2,1000中的完全数:1:6=1+2+32:28=1+2+4+7+143:496=1+2=4+8+16+31+62+124+24814相亲数set talk offfor i=
10、11 to 9999s=1t=int(sqrt(i)+.01):for j=2 to tif i%j=0s=s+j+i/jendifendforif i=t*ts=s-tendifif istr(s,5)+的真因数之和为:1for j=2 to s/2if s%j=0+ltrim(str(j)endifendfor=+ltrim(str(i)endif,endifendforreturn运行程序,得4位以内的相亲数:(相亲数:220 284220的真因数之和为:1+2+4+5+10+11+20+22+44+55+110=284284的真因数之和为:1+2+4+71+142=220相亲数 118
11、4 1210$1184的真因数之和为:1+2+4+8+16+32+37+74+148+296+592=12101210的真因数之和为:1+2+5+10+11+22+55+110+121+242+605=1184相亲数 2620 29242620的真因数之和为:1+2+4+5+10+20+131+262+524+655+1310=2924¥2924的真因数之和为:1+2+4+17+34+43+68+86+172+731+1462=2620相亲数 5020 55645020的真因数之和为:1+2+4+5+10+20+251+502+1004+1255+2510=5564、5564的真因数之和为:1
12、+2+4+13+26+52+107+214+428+1391+2782=5020相亲数 6232 63686232的真因数之和为:1+2+4+8+19+38+41+76+82+152+164+328+779,+1558+3116=63686368的真因数之和为:1+2+4+8+16+32+199+398+796+1592+3184=623215守形数set talk offinputx= to xinputy= to yfor a=x to ys=a*ab=1k=ado while k0。b=b*10k=int(k/10)enddoc=s%bif a=cltrim(str(a)+2=+ltri
13、m(str(s)endifendforreturn运行程序,输入X=10,Y=10000得252=625762=57763762=1413766252=39062593762=16素数set talk off本程序求区间c,d上的素数:input输入区间下限c:to cinput输入区间上限d:to d*区间+ltrim(str(c)+,+ltrim(str(d)+上的素数有:n=0if c%2=0c=c+1$endif for i=c to d step 2t=0for j=3 to sqrt(i) step 2if i%j=0t=1exitendifendforif t=0 str(i,6
14、)、n=n+1if mod(n,10)=0 endifendifendfor共+ltrim(str(n)+个素数.return程序运行示例本程序求区间C,D上的数数输入区间下限C:2000输入区间上限D:21002003 2011 2017 2027 2029 2039 2053 2063 2069 20812083 2087 2089 2099共14个素数17乌兰现象set talk offclearinput 请输入数阵的阶数m: to mdime x(m+1)*(m+1),y(m+1)*(m+1)x(1)=0y(1)=0n=1t=int(m/2)for i=1 to tn=n+1x(n)
15、=x(n-1)+1y(n)=y(n-1)(do while y(n)-in=n+1x(n)=x(n-1)-1y(n)=y(n-1)enddodo while y(n)-in=n+1x(n)=x(n-1)y(n)=y(n-1)-1enddodo while x(n)i|n=n+1x(n)=x(n-1)+1y(n)=y(n-1)enddo(endfor str(m,2)+阶数字方螺线为:for k=1 to m*mr=0;for j=2 to sqrt(k)if k%j=0r=1exit;endifendforif r=0 and k#1 25-y(k)*2,80+x(k)*5 say str(k
16、,3) color GR+/R!else 25-y(k)*2,80+x(k)*5 say str(k,3)endifwait wind time ;endforreturn运行程序,输入M=10,得10阶数字方螺线如下图:100 99 98 97 96 95 94 93 92 91-65 64 63 62 61 60 59 58 57 9066 37 36 35 34 33 32 31 56 8967 38 17 16 15 14 13 30 55 8868 39 18 5 4 3 12 29 54 87!69 40 19 6 1 2 11 28 53 8670 41 20 7 8 9 10
17、27 52 8571 42 21 22 23 24 25 26 51 8472 43 44 45 46 47 48 49 50 83?73 74 75 76 77 78 79 80 81 82 乌兰现象再现18孪生素数set talk off2): to cinput请输入d: to df=0)n=0if c%2=0c=c+1endif|for i=c to d step 2t=0for j=3 to sqrt(i) step 2if i%j=0#t=1exitendifendfor&if t=0if i-f=2(+ltrim(str(f)+,+ltrim(str(i)+)n=n+1$endi
18、ff=iendifendfor¥共+ltrim(str(n)+对孪生素数.return运行程序,输入区间101,200,得(101,103),(107,109),(137,139),(149,151),(179,181)(191,193),(197,199)共7对孪生素数19梅森尼数set talk off/clears=0t=2for n=2 to 50t=t*2m=t-1x=0for j=3 to sqrt(m)+1 step 2if m%j=0x=1exitendif:endforif x=0s=s+1 2+ltrim(str(n)+-1=+ltrim(str(m),endifendfo
19、r指数n于2,50中梅森尼数共有+ltrim(str(s)+个.return】程序运行结果与讨论22-1=323-1=725-1=3127-1=127213-1=8191217-1=131071219-1=524287:231-1=47指数n于2,50中的梅森尼数共有8个20金蝉素数dime a(5);金蝉素数为:for k=10001 to 99999 step 2t=0for j=3 to sqrt(k) step 2|if k%j=0t=1exitendif(endforif t=0a(1)=k%10a(5)=int(k/10000)。d=int(k/10)%1000for j=2 to
20、 sqrt(d)if d%j=0t=1】exitendifendforendif-if t=0a(2)=d%10a(4)=int(d/100)a(3)=int(d/10)%10for i=1 to 4for j=i+1 to 5if a(i)=a(j)t=1exitendifendforendfor*endifif t=0for j=1 to 5if a(j)%2=0 or a(3)=1 or a(3)=9!t=1exitendifendfor$endifif t=0kendif!endforreturn程序运行,得5个金蝉素数:13597 53791 79531 91573 95713;在输
21、出的这5个金蝉素数中,13597与79531是互逆的金蝉素数。21素数多项式set talk offm=0-input请输入f: to fy=x2-x+str(f,2)+,当x取值在1,+str(f-1,2)+,y的素数分布: !for x=1 to f-1y=x*x-x+ft=0for k=3 to sqrt(y) step 2:if y%k=0t=1exitendif|endforif t=0x=+str(x,2)+时,+str(y,4)+素数:m=m+1if m%4=0 endifelsex=+str(x,2)+时,+str(y,4)=+str(k,3)+*+str(y/endifend
22、for)return请输入f:41y=x2+41 ,当n取值在1,40,y的素数分布:x=1时,41素数,x=2时,43素数,x=3时,47素数,¥x=4时,53素数,x=5时,61素数,x=6时,71素数,x=7时,83素数,x=8时,97素数,x=9时,113素数,x=10时,131素数,x=11时,151素数,x=12时,173素数,x=13时,197素数,x=14时,223素数,x=15时,251素数,x=16时,281素数,x=17时,313素数,x=18时,347素数,x=19时,383素数,x=20时,421素数,x=21时,461素数,x=22时,503素数,x=23时,547
23、素数,x=24时,593素数,x=25时,641素数,x=26时,691素数,x=27时,743素数,x=28时,797素数,x=29时,853素数,x=30时,911素数,x=31时,971素数,x=32时,1033素数,x=33时,1097素数,x=34时,1163素数,x=35时,1231素数,x=36时,1301素数,x=37时,1373素数,x=38时,1447素数,x=39时,1523素数,x=40时,1601素数,验证了当x=1,2,40时,二次多项式x2-x+41的值均为素数22等差素数列求指定区间内等差素数列的最多项数:;input 请输入区间下限w0: to w0input
24、 请输入区间上限w:to wdime a(w-w0)/2)u=0(if w0%2=0w0=w0+1endiffor k=w0 to w step 2t=0for j=3 to sqrt(k) step 2if k%j=0t=1|exitendifendforif t=0(u=u+1a(u)=kendifendfor】max=0for n=1 to u-1p=a(u)-a(n)for j=n+1 to u?d=a(j)-a(n)if dp/3exitendifh=jm1=2for i=j+1 to uif a(i)-a(h)=dh=im1=m1+1endifif max for i=1 to max ltrim(str(m+(i-1)*d1)+ ;endforreturn程序运行示例:请输入区间下限w0:3请输入区限上限w:2009区间3,2009内等差素数列最多有9项:199 409 619 829 1039 1249 1459 1669 1879请输入区间下限w0:101请输入区限上限w:1000区间3,2009内等差素数列最多有6项:107 137 167 197 227 257 23验证歌德巴赫想set talk off在区间c,d中验证哥德巴赫猜想:input请输入区间下限c=to cinput请输入区间上限d=to d(if c%2#0c=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1