趣味VisualFoxPro程序设计集锦.docx

上传人:b****8 文档编号:9439311 上传时间:2023-02-04 格式:DOCX 页数:67 大小:26.05KB
下载 相关 举报
趣味VisualFoxPro程序设计集锦.docx_第1页
第1页 / 共67页
趣味VisualFoxPro程序设计集锦.docx_第2页
第2页 / 共67页
趣味VisualFoxPro程序设计集锦.docx_第3页
第3页 / 共67页
趣味VisualFoxPro程序设计集锦.docx_第4页
第4页 / 共67页
趣味VisualFoxPro程序设计集锦.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

趣味VisualFoxPro程序设计集锦.docx

《趣味VisualFoxPro程序设计集锦.docx》由会员分享,可在线阅读,更多相关《趣味VisualFoxPro程序设计集锦.docx(67页珍藏版)》请在冰豆网上搜索。

趣味VisualFoxPro程序设计集锦.docx

趣味VisualFoxPro程序设计集锦

-

趣味VisualFoxPro程序设计集锦

5.舍罕王的失算

settalkoff

input[请输入n:

]ton

|

t=1

s=1

fori=2ton

t=t*2

"

s=s+t

endfor

v=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:

"ton

t=1

\

s=1

fori=2ton

t=t*2

s=s+t

endfor

"共需花费"+ltrim(str(s,16))+"个包卢斯卡."

"合约"+str(s/400,10,4)+"卢卡."

return

~

程序运行结果与点评

请输入n:

24

共需花费1677215个外包卢斯卡

合约卢布

6分数不等式

"求n<1+1/2+1/3+1/4+...+1/m

settalkoff

setdecito14

>

input"请输入n:

"ton

i=0

s=0

dowhiles

i=i+1

s=s+1/i

enddo

c=i

%

dowhiles

i=i+1

s=s+1/i

enddo

!

d=i-1

"满足不等式的m为:

"+ltrim(str(c,10))+"

return

程序运行结果:

求n<1+1/2+1/3+1/4….+1/m

请输入n:

10

满足不等式的m为:

12367

请输入n:

15

满足不等式的m为:

1835421

7阶乘与阶乘和数

settalkoff

"三位阶乘和数有:

"

form=100to999

a=int(m/100)

b=mod(int(m/10),10)

c=mod(m,10)

'

ifm=jc(a)+jc(b)+jc(c)

m

endif

endfor

~

return

funcjc

parax

p=1

*

fori=1tox

p=p*i

endfor

returnp

程序运行结果:

三位阶乘和数有:

145

可见145是唯一的三位阶乘和数

8综合高精度计算

clear

dimea(500)

a=0

"1:

计算阶乘n!

"

"2:

计算乘方m^n"

"3:

计算排列数A(n,m)"

input"选择(1-3):

"toz

input"请输入正整数n:

"ton

^

ifz#1

input"请输入正整数m(m<=n):

"tom

endif

d=500

;

t=1

ifz=3

t=n-m+1

endif

~

a

(1)=1

fori=tton

ifz=2

b=m

|

else

b=i

endif

f=0

*

forj=1tod

x=a(j)*b+f

f=int(x/10)

a(j)=x%10

endfor

endfor

j=d

dowhilea(j)=0

j=j-1

enddo

f=j

docase

casez=1

str(n,8)+"!

="

casez=2

str(m,6)+"^"+ltrim(str(n))+"="

$

casez=3

"A("+ltrim(str(n))+","+ltrim(str(m))+")="

endcase

d=0

-

forj=fto1step-1

d=d+1

str(a(j),1)

ifd%50=0

space(10)

endif

endfor

"所得结果共"+ltrim(str(f))+"位"

|

return

运行程序,选择3,输入n=100,m=90,得

A(100,90)=0000000000000000000

所得结果共152位。

"

10最大公约数与最小公倍数

settalkoff

input"输入正整数a:

"toa

input"输入整数b:

"tob

st=ltrim(str(a,12))+","+ltrim(str(b,12))

m=a*b

r=mod(a,b)

dowhiler#0

-

a=b

b=r

r=mod(a,b)

enddo

"

"("+st+")="+ltrim(str(b,15))

"("+st+")="+ltrim(str(m/b))

return

运行程序,输入1104,1272得

(1104,1272)=24

{1104,1272}=58512

11水仙花数

settalkoff

.

input"输入正整数a:

"toa

input"输入整数b:

"tob

st=ltrim(str(a,12))+","+ltrim(str(b,12))

m=a*b

-

r=mod(a,b)

dowhiler#0

a=b

b=r

.

r=mod(a,b)

enddo

"("+st+")="+ltrim(str(b,15))

"("+st+")="+ltrim(str(m/b))

return

运行程序,得水仙花数:

153370371407

12勾股数

~

settalkoff

input"请输入区间下限值:

"tom1

inpu"请输入区间上限值:

"tom2

"区间["+ltrim(str(m1))+","+ltrim(str(m2))+"]中的勾股数组有:

"

[

n=0

fora=2tosqrt(m2)

forb=1toa-1

if(a+b)%2=0

b=b+1

endif

t=0

fork=2tob

ifb%k=0anda%k=0

t=1

endif

endfor

ift=0

d=a*a-b*b

e=2*a*b

f=a*a+b*b

·

fori=1tom2/f

x=i*d

y=i*e

z=i*f

~

ifxm2

loop

endif

str(x)+str(y)+str(z)

?

n=n+1

endfor

endif

endfor

endfor

"共"+ltrim(str(n))+"组勾股数."

return

运行程序,求得[10,30]中的勾股数:

]

区间(10,30)中的勾股数组有:

121620

152025

182430

~

102426

212029

13完全数

settalkoff

%

input[x=]tox

input[y=]toy

"区间["+ltrim(str(x))+","+ltrim(str(y))+"]中的完全数:

"

n=0

·

fora=xtoy

s=1

fork=2toa/2

ifa%k=0

&

s=s+k

endif

endfor

ifs=a

n=n+1

str(n,3)+":

"+ltrim(str(a))+"-1"

fork=2toa/2

ifa/k=int(a/k)

<

"+"+ltrim(str(k,5))

endif

endfor

endif

endfor

return

运行程序,输入X=2,Y=100,得

区间[2,1000]中的完全数:

'

1:

6=1+2+3

2:

28=1+2+4+7+14

3:

496=1+2=4+8+16+31+62+124+248

14相亲数

[

settalkoff

fori=11to9999

s=1

t=int(sqrt(i)+.01)

forj=2tot

ifi%j=0

s=s+j+i/j

endif

]

endfor

ifi=t*t

s=s-t

endif

]

ifi

s1=1

t=int(sqrt(s)+

forj=2tot

`

ifs%j=0

s1=s1+j+s/j

endif

endfor

ifs=t*t

s1=s1-t

endif

ifs1=i

·

"相亲数:

"+str(i)+str(s)

str(i,5)+"的真因数之和为:

1"

forj=2toi/2

ifi%j=0

"+"+ltrim(str(j))

endif

endfor

"="+ltrim(str(s))

>

str(s,5)+"的真因数之和为:

1"

forj=2tos/2

ifs%j=0

"+"+ltrim(str(j))

·

endif

endfor

"="+ltrim(str(i))

endif

endif

endfor

return

运行程序,得4位以内的相亲数:

相亲数:

220284

220的真因数之和为:

1+2+4+5+10+11+20+22+44+55+110=284

284的真因数之和为:

1+2+4+71+142=220

相亲数11841210

$

1184的真因数之和为:

1+2+4+8+16+32+37+74+148+296+592=1210

1210的真因数之和为:

1+2+5+10+11+22+55+110+121+242+605=1184

相亲数26202924

2620的真因数之和为:

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

相亲数50205564

5020的真因数之和为:

1+2+4+5+10+20+251+502+1004+1255+2510

=5564

5564的真因数之和为:

1+2+4+13+26+52+107+214+428+1391+2782

=5020

相亲数62326368

6232的真因数之和为:

1+2+4+8+19+38+41+76+82+152+164+328+779

+1558+3116=6368

6368的真因数之和为:

1+2+4+8+16+32+199+398+796+1592+3184

=6232

15守形数

>

settalkoff

input[x=]tox

input[y=]toy

fora=xtoy

'

s=a*a

b=1

k=a

dowhilek>0

b=b*10

k=int(k/10)

enddo

c=s%b

~

ifa=c

ltrim(str(a))+[^2=]+ltrim(str(s))

endif

endfor

~

return

运行程序,输入X=10,Y=10000得

25^2=625

76^2=5776

'

376^2=141376

625^2=390625

9376^2=

16素数

"

settalkoff

"本程序求区间[c,d]上的素数:

"

input"输入区间下限c:

"toc

input"输入区间上限d:

"tod

*

"区间["+ltrim(str(c))+","+ltrim(str(d))+"]上的素数有:

"

n=0

ifc%2=0

c=c+1

$

endif

""

fori=ctodstep2

t=0

forj=3tosqrt(i)step2

ifi%j=0

t=1

exit

[

endif

endfor

ift=0

str(i,6)

n=n+1

ifmod(n,10)=0

""

endif

"

endif

endfor

"共"+ltrim(str(n))+"个素数."

return

~

程序运行示例

本程序求区间[C,D]上的数数

输入区间下限C:

2000

输入区间上限D:

2100

"

2003201120172027202920392053206320692081

2083208720892099

共14个素数

17乌兰现象

<

settalkoff

clear

input"请输入数阵的阶数m:

"tom

dimex((m+1)*(m+1)),y((m+1)*(m+1))

{

x

(1)=0

y

(1)=0

n=1

t=int(m/2)

^

fori=1tot

n=n+1

x(n)=x(n-1)+1

y(n)=y(n-1)

dowhiley(n)

n=n+1

x(n)=x(n-1)

y(n)=y(n-1)+1

enddo

dowhilex(n)>-i

n=n+1

x(n)=x(n-1)-1

`

y(n)=y(n-1)

enddo

dowhiley(n)>-i

n=n+1

'

x(n)=x(n-1)

y(n)=y(n-1)-1

enddo

dowhilex(n)

|

n=n+1

x(n)=x(n-1)+1

y(n)=y(n-1)

enddo

endfor

str(m,2)+"阶数字方螺线为:

"

fork=1tom*m

r=0

;

forj=2tosqrt(k)

ifk%j=0

r=1

exit

endif

endfor

ifr=0andk#1

@25-y(k)*2,80+x(k)*5saystr(k,3)colorGR+/R

else

@25-y(k)*2,80+x(k)*5saystr(k,3)

endif

waitwindtime

;

endfor

return

运行程序,输入M=10,得10阶数字方螺线如下图:

100999897969594939291

-

65646362616059585790

66373635343332315689

67381716151413305588

68391854312295487

69401961211285386

70412078910275285

71422122232425265184

72434445464748495083

?

73747576777879808182

乌兰现象再现

18孪生素数

settalkoff

<

"求区间[c,d]上的孪生素数对"

input"请输入c(c>2):

"toc

input"请输入d:

"tod

f=0

n=0

ifc%2=0

c=c+1

endif

|

fori=ctodstep2

t=0

forj=3tosqrt(i)step2

ifi%j=0

#

t=1

exit

endif

endfor

&

ift=0

ifi-f=2

"("+ltrim(str(f))+","+ltrim(str(i))+")"

n=n+1

$

endif

f=i

endif

endfor

"共"+ltrim(str(n))+"对孪生素数."

return

运行程序,输入区间[101,200],得

(101,103),(107,109),(137,139),(149,151),(179,181)

(191,193),(197,199)

共7对孪生素数

19梅森尼数

settalkoff

/

clear

s=0

t=2

forn=2to50

`

t=t*2

m=t-1

x=0

forj=3tosqrt(m)+1step2

~

ifm%j=0

x=1

exit

endif

endfor

ifx=0

s=s+1

"2^"+ltrim(str(n))+"-1="+ltrim(str(m))

endif

endfor

"指数n于[2,50]中梅森尼数共有"+ltrim(str(s))+"个."

return

程序运行结果与讨论

2^2-1=3

2^3-1=7

2^5-1=31

]

2^7-1=127

2^13-1=8191

2^17-1=131071

2^19-1=524287

:

2^31-1=47

指数n于[2,50]中的梅森尼数共有8个

20金蝉素数

dimea(5)

"金蝉素数为:

"

fork=10001to99999step2

t=0

forj=3tosqrt(k)step2

|

ifk%j=0

t=1

exit

endif

endfor

ift=0

a

(1)=k%10

a(5)=int(k/10000)

d=int(k/10)%1000

forj=2tosqrt(d)

ifd%j=0

t=1

exit

endif

endfor

endif

-

ift=0

a

(2)=d%10

a(4)=int(d/100)

a(3)=int(d/10)%10

]

fori=1to4

forj=i+1to5

ifa(i)=a(j)

t=1

~

exit

endif

endfor

endfor

*

endif

ift=0

forj=1to5

ifa(j)%2=0ora(3)=1ora(3)=9

!

t=1

exit

endif

endfor

$

endif

ift=0

k

endif

!

endfor

return

程序运行,得5个金蝉素数:

1359753791795319157395713

;

在输出的这5个金蝉素数中,13597与79531是互逆的金蝉素数。

21素数多项式

settalkoff

m=0

-

input"请输入f:

"tof

"y=x^2-x+"+str(f,2)+","

"当x取值在[1,"+str(f-1,2)+"],y的素数分布:

"

""

forx=1tof-1

y=x*x-x+f

t=0

fork=3tosqrt(y)step2

:

ify%k=0

t=1

exit

endif

|

endfor

ift=0

"x="+str(x,2)+"时,"+str(y,4)+"素数:

"

m=m+1

~

ifm%4=0

""

endif

else

·

"x="+str(x,2)+"时,"+str(y,4)

"="+str(k,3)+"*"+str(y/

endif

endfor

return

请输入f:

41

y=x^2+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素数,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时,二次多项式x^2-x+41的值均为素数

22等差素数列

"求指定区间内等差素数列的最多项数:

"

;

input"请输入区间下限w0:

"tow0

input"请输入区间上限w:

"tow

dimea((w-w0)/2)

u=0

ifw0%2=0

w0=w0+1

endif

fork=w0towstep2

>

t=0

forj=3tosqrt(k)step2

ifk%j=0

t=1

|

exit

endif

endfor

ift=0

u=u+1

a(u)=k

endif

endfor

max=0

forn=1tou-1

p=a(u)-a(n)

forj=n+1tou

?

d=a(j)-a(n)

ifd>p/3

exit

endif

}

h=j

m1=2

fori=j+1tou

ifa(i)-a(h)=d

h=i

m1=m1+1

endif

ifmax

'

max=m1

m=a(n)

d1=d

endif

\

endfor

endfor

endfor

"区间["+ltrim(str(w0))+","+ltrim(str(w))+"]"

{

"内等差素数列最多有"+ltrim(str(max))+"项>"

""

fori=1tomax

ltrim(str(m+(i-1)*d1))+""

endfor

return

程序运行示例:

请输入区间下限w0:

3

>

请输入区限上限w:

2009

区间[3,2009]内等差素数列最多有9项:

19940961982910391249145916691879

请输入区间下限w0:

101

}

请输入区限上限w:

1000

区间[3,2009]内等差素数列最多有6项:

107137167197227257

23验证歌德巴赫想

@

settalkoff

"在区间[c,d]中验证哥德巴赫猜想:

"

input"请输入区间下限c="toc

input"请输入区间上限d="tod

ifc%2#0

c=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1