|

楼主 |
发表于 2021-10-7 08:22
|
显示全部楼层
SELECT 1
USE D:\标记法\四生素数生成元.DBF ALIAS 四生成元
SELECT 2
USE D:\标记法\素数表5万.DBF ALIAS 素数表
kssj=SECONDS() &&取出开始时间
FOR i=1 TO 3187041
@22,20 SAY i
n=i
bpz=19+(n-INT((n-1)/3)*3-1)*90+INT((n-1)/3)*210&&给被判断值置数,以循环值做变量。
SELECT 素数表
GO 5 &&从第二条记录开始读取素数(3)
FOR j=1 TO 5 &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
qmz=MOD(bpz,素参) &&以读取的素数为条件,对被判断值求模
IF qmz=0 OR qmz=2 OR qmz=6 OR qmz=8 &&如果符合这四个约定条件之一,就进行相应工作.如果一个也没有符合条件的,直接使记录指针向下移动一个(SKIP)
EXIT &&因为符合条件,则做完相应工作后跳出内循环
ENDIF
SKIP &&素数表指针向下移动一个
ENDFOR
IF j>5
SELECT 1 &&打开保存求解结果的信息表
APPEND BLANK &&增加一条空记录
REPLACE 四生元 WITH bpz &&将被判断值保存到被判断值字段中(被判断值数据栏)
ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是产生四生素数生成元程序,到了素数23,自然数跨度223092870. |
|