|
[原创]您对合数感兴趣吗?
100000以内的所有合数的因式个数,及质因数分解存储的数据库名为gsjza.dbf。
100000以内质因数个数的不减数列的因式个数及质因数分解存储的数据库名为gsjzb.dbf。
100000以内质因数个数的严格递增数列的因式个数及质因数分解存储的数据库名为gsjzc.dbf。
编这个程序前,事先要生成素数表ssb.dbf
这个程序的名称为sjzhs.prg。
程序具体是:
sjzhs.prg:
CLEAR ALL
CLEAR
SET TALK OFF
sja=TIME()
use gsjza
DELETE ALL
PACK
use gsjzb
DELETE ALL
PACK
use gsjzc
DELETE ALL
PACK
DIMENSION a(3)
p=0
k=100000
do whil .t.
p=p+2
IF p>k+2
EXIT
ENDIF
q=p
m=1
DIMENSION b(m),c(m)
b=0
c=0
use ssb
GO 1
d=ss
pb=0
do whil .t.
IF pb=1
EXIT
ENDIF
b(m)=d
e=q/d
c(m)=c(m)+1
IF e=INT(e)
IF e>1
q=e
loop
ELSE
gs=1
ys=';1';
FOR i=1 to m
u=b(i)
v=c(i)
IF v>1 and i1
ys=ys+';*';+STR(u,INT(LOG10(u))+1)+';^';+STR(v,INT(LOG10(v))+1)
ELSE
ys=ys+';*';+STR(u,INT(LOG10(u))+1)
endi
endf
a(1)=p
a(2)=gs
a(3)=ys
use gsjza
APPEND FROM arra a
use gsjzb
IF RECCOUNT()>0
GO RECCOUNT()
endi
IF gs>=ysgs
APPEND FROM arra a
endi
use gsjzc
IF RECCOUNT()>0
GO RECCOUNT()
endi
IF gs>ysgs
APPEND FROM arra a
endi
endi
exit
ELSE
do while .t.
SKIP
IF RECNO()>RECCOUNT()
pb=1
EXIT
endi
d=ss
e=q/d
IF INT(e)=e
m=m+1
DIMENSION b(m),c(m)
c(m)=0
EXIT
endi
endd
endi
endd
endd
sjb=TIME()
SET TALK ON
?sja,'; ';,sjb |
|