|
Local xjl,djl,ts,xss,dss,kssj,tj
CLEAR
CLOSE TABLES all
Select 1
Use D:\二生素数中项合成\偶数的素数对.Dbf Alias 偶数素数对
Select 2
Use D:\二生素数中项合成\二生L46中项.Dbf Alias 广孪中表
kssj=Seconds()
For i=99901 To 100000 &&i 是多余的。用y就可以了
Wait Transform(i) Window At 3,6 Nowait
y=3*i
X=6*i
* Y=X/2
s=0
Select 2
Locate For 二46中>X
*!* DO CASE
*!* CASE EOF()
*!* GO Bottom &&已经eof()了,就是BOttom了
*!* CASE 二24中>X
*!* SKIP -1
*!* ENDCASE
**改为
If Found()
Skip -1
Endif
xjl=1
djl=Recno()
T=.T.
Do While T
dss=二46中
Go xjl
xss=二46中
*!* IF xss=<Y OR dss>=Y
*!* t=.T. &&多余本来就是.t.,如果不是,就退出Do While了
*!* ELSE
*!* t=.F.
*!* ENDIF
**改为
If XSS>Y-1 And dss<Y+1
T=.F.
ENDIF
**死循环就是这一条件当i=199819时永无法满足。
Do Case
Case xss+dss>X
Go djl
Skip -1
djl=Recno()
Case xss+dss=X
s=s+1
Case xss+dss<X
Go xjl
Skip
xjl=Recno()
Go djl
Endcase
Enddo
&& If xss>=Y Or dss=<Y 这一条件永远不会成立,因为只有它不成立时,才能退出do while循环。
Select 1
Append Blank
Replace 偶数 With X
Replace 素数对 With s
&& Endif
Endfor
=Messagebox("运行时间:"+Ltrim(Str(Int((Seconds()-kssj)/60)))+"分"+Ltrim(Str(Mod(Seconds()-kssj,60),5,2))+"秒",64,"运行时间提示")
因为算法设计,大小论,从两端往中间靠拢,挤压,有大小之分,所以是单记法。 |
|