|

楼主 |
发表于 2022-10-18 15:11
|
显示全部楼层
k生素数的渐进公式及中值的合成
CLEAR ALL
SELECT 1
USE E:\用vfp求k生素数数量\最密10生素数群.DBF ALIAS 最密10生素数
SELECT 2
USE E:\用vfp求k生素数数量\素数表2.DBF ALIAS 素数表
SELECT 3
USE E:\用vfp求k生素数数量\k10生成初始值31.DBF ALIAS 生成初始值31
*INPUT "请输入预先值 K= " TO yxk
*INPUT "请输入步长值 bcz= " TO bcz
*INPUT "请输入初始值 csz= " TO csz
*INPUT "请输入外循环起始值 xks= " TO xks
*INPUT "请输入外循环终结值 zds= " TO zds
GO top &&***************这条语句是将“k8生成初始值31”表的指针移到“41001”处**************
DO WHILE NOT EOF() &&*********既然是调用表中信息,而且是后部分,就应该使用“DO WHILE NOT EOF()”语句,由它来判断是否到文件尾**********
@ 2,5 say RECNO() &&显示记录号
scy=生成元31 &&计算被判断值
For i=0 to 0
bpz=scy+i*200560490130
Kf=INT(SQRT(bpz)) &&求出被判断值的开方根
SELECT 素数表 &&打开素数表
LOCATE FOR 素数>=kf &&根据开方根,查找最大素数
DO CASE
CASE EOF() &&如果超出素数表最后一条记录
GO BOTTOM
CASE 素数>kf &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
SKIP -1
ENDCASE
SSS=RECNO() &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
GO 11 &&从第二条记录开始读取素数(37)
FOR j=11 TO SSS &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
qmz=MOD(bpz,素数) &&以读取的素数为条件,对被判断值求模 【qmz=MOD(bpz,素数)】文本号括着的原在此行语句体部分.特别需要注意的是在用标点符号时,一定改成英文模式及半角状态。
IF qmz=0 OR qmz=2 OR qmz=6 OR qmz=12 OR qmz=14 OR qmz=20 OR qmz=24 OR qmz=26 OR qmz=30 OR qmz=32
EXIT
ENDIF
SKIP &&素数表指针向下移动一个
ENDFOR
IF j>sss
SELECT 最密10生素数 &&打开保存求解结果的信息表
APPEND BLANK &&增加一条空记录
REPLACE 被判值 WITH bpz &&将被判断值保存到被判断值字段中(被判断值数据栏)
ENDIF
ENDFOR
SELECT 生成初始值31
SKIP
ENDDO
CLEAR ALL
这是寻找10生素数群的vfp程序。
昨晚用此程序获得了200560490130内的10生素数群两组:
10生素数群→→10生素数群
33081664151→→83122625471
33081664153→→83122625473
33081664157→→83122625477
33081664159→→83122625479
33081664163→→83122625483
33081664169→→83122625489
33081664171→→83122625491
33081664177→→83122625497
33081664181→→83122625501
33081664183→→83122625503
k生素数的渐进公式及中值的合成
http://www.mathchina.com/bbs/for ... 1&fromuid=37263
(出处: 数学中国)
转载于连接13# |
|