|
在VF语言环境下找出随机产生的m位的偶数所表示为的素数对
1、先建立结构如下的数据库:
Field 字段名 类型 宽度
1 XH 数值型 12
2 XSS 数值型 20
3 DSS 数值型 20
2、编一个能判断一个自然数是否为素数的程序bbss.prg :
s=1
do whil .t.
IF s>SQRT(q)
EXIT
ENDIF
s=s+2
GO 1
REPLACE xss with 1
IF q/s=INT(q/s)
GO 1
REPLACE xss with 0
EXIT
ENDIF
Endd
3、再编一个主程序:
CLEAR ALL
CLEAR
SET TALK off
sja=TIME()
inpu ';输入偶数位数'; to m
p=INT(RAND()*10^m)
IF p/2>INT(p/2)
p=p+1
endi
use aa
DELETE ALL
PACK
DIMENSION a(3)
APPEND BLANK
REPLACE xss with 1,dss with p
q=p-3
do bbss
GO 1
IF xss=1
a(1)=1
a(2)=3
a(3)=q
APPEND FROM arra a
ENDIF
u=3
do while .t.
IF u>p-u
EXIT
ENDIF
u=u+2
q=u
do bbss
GO 1
IF xss=1
a(2)=u
ENDIF
q=p-u
do bbss
GO 1
IF xss=1 and u=a(2)
a(1)=RECc()
a(2)=u
a(3)=p-u
APPEND FROM arra a
ENDIF
endd
sjb=TIME()
SET TALK ON
k=LOG10(RECCOUNT())
?';偶数';+STR(p,m)+';共可表示为';+STR(RECCOUNT()-1,k+1)+';对素数的和';
?sja, "",sjb
执行程序结束后可在屏幕上显示出用时和素数对的数量。
打开数据库即可见到各对素数。 |
|