注册 登录
编程论坛 VFP论坛

优化程序或者从新编写求四生素数中项不能合成的偶数

独木星空 发布于 2021-10-17 19:31, 13653 次点击
* 以大定小选配素数对
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\vfp温习\L8四生素数尾素不能合成数.DBF ALIAS 素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\vfp温习\L8四生素数真表.DBF  ALIAS 素数表
kssj=SECONDS()
FOR i=23000001  to 24000000
@ 3,6 say i
    n=i
       X=8+(INT((n-INT((n-1)/5)*5)/2)+(n-INT((n-1)/5)*5))*30+INT((n-1)/5)*210 &&这是在给被判偶数置数,思路每5个偶数构成一个循环期,步长210。
          Y=X/2   &&求出偶数的中值(上一条置数语句,除了外步长210,还有内步长30,但是有2个间断点,所以有些复杂。
        SELECT 素数表
        LOCATE FOR 四素>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 四素>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=四素
                GO xjl
                xss=四素
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                IF xss<Y+1 OR dss>Y-1                              &&判断跳出语句如果放在后面,有时出现一个重复素数对
                          t=.T.
                          ELSE
                          t=.F.                                       &&跳出命令
                ENDIF                                               &&结束判断
                DO CASE
                        CASE xss+dss>X
                                GO djl
                                SKIP -1
                                djl=RECNO()
                        CASE xss+dss=X
                                EXIT
                        CASE xss+dss<X
                                GO xjl
                                SKIP
                                xjl=RECNO()
                                GO djl
                ENDCASE
        ENDDO
        IF xss>Y OR dss<Y
        SELECT 素数对
                                APPEND BLANK
                                REPLACE 偶数 WITH X
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是我编写的程序,下一贴把四生素数表(最末的一项代表值,即一组四生素数用最末的一个素数代替),发上来,还有存储表:不能被合成的偶数。
267 回复
#152
laowan0012021-11-17 20:36
你所说的“上一个表参与”,在哪里体现了?
#153
独木星空2021-11-17 22:32
回复 152楼 laowan001
第二次外循环的,内层循环是偶数周期表17至表34;第三次外循环,内部循环是偶数周期表34到偶数周期表51;
这里明显可以看出偶数周期表34是第二次外循环的末表,但是却是第三次外循环的初表,这样,外循环中的表,首尾相连,公用一个表,这就是“参与表”。或者干脆认为每个外循环处理18个表(只是,这18个表,上相连,下也相连,只有16个表是独立的,所以,实际上,每次外循环处理的表数为17个)。这不是问题的关键,问题是:例如我们从外循环2开始,这时,需要对偶数周期表17,至34的表,给工作区,及表名(别名不用能行的话,那些表在运行中必须以独占的方式打开,不知道不给别名,是否可以正常运行),在此之前,我是手工给改写的。
     运行完第二个外循环值后,接着运行第三个外循环值,这时用什么语句可以把上次处理的表名,改写成当次的处理表名,及工作区(别名不考虑的情况下,考虑,三项同时改写)。
     也就是把外循环值与内循环处理的18个偶数周期表关联起来(目的改变表名及工作区)。
#154
独木星空2021-11-17 23:55
回复 130楼 laowan001
在先生的帮助下,已经改成自动改变表名及工作区。
运行完,贴出。
然后可以轻松的再加一套外循坏。
#155
独木星空2021-11-18 00:19
回复 154楼 独木星空
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
bwjm="偶数周期表"
For j=204 to 221
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE G:\三角递增法\&wd in 0
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 5,12 say i
      n=i
      s=0
      IF MOD(n,5)=1
      s=s+30
      ENDIF
      IF MOD(n,5)=2
      s=s+90
      ENDIF
      IF MOD(n,5)=3
      s=s+120
      ENDIF
      IF MOD(n,5)=4
      s=s+180
      ENDIF
      IF MOD(n,5)=0
      s=s+210
      ENDIF
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 239
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是第13次外循环。
#156
独木星空2021-11-18 00:30
CLOSE DATA
USE G:\三角递增法\无偶数表总表.dbf && 设源表的名称为"表1"
P=''
FOR K=1 TO FCOUNT()
P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
ENDFOR

SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF G:\三角递增法\相同记录数表总13 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
USE IN   相同记录数表总13
接上楼
#157
独木星空2021-11-18 00:31
SELECT 1
USE G:\三角递增法\相同记录数表总13.DBF ALIAS 相同记录表13
SELECT 2
USE G:\三角递增法\无偶最终结果表新总13.DBF ALIAS 无偶结果表新13
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 599700
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=相同记录数
    B=无偶
    IF A=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH B     &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上楼
#158
独木星空2021-11-18 00:34
SELECT 1
USE G:\三角递增法\无偶最终结果表新总13.DBF ALIAS 无偶总新13
SELECT 2
USE G:\三角递增法\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=4285 to 4641
      @ 3,6 say j
      fw=j*1000000
            SELECT 1
            GO 1
            COUNT ALL FOR 无偶<=fw TO tj
              SELECT  2  
              APPEND BLANK   
              REPLACE 范围 WITH fw
              REPLACE 统计 WITH tj
     ENDFOR
   
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上楼,最后一步。
#159
独木星空2021-11-18 00:38
无偶
4377160800
4388752380
4467906420
这是第13次外循环的最终结果,意思在17个段落中,只有这三个反例(每段跨越2100万个自然数)
#160
独木星空2021-11-18 00:42
总区段    统计13
205    0
206    0
207    0
208    0
209    2
210    0
211    0
212    0
213    1
214    0
215    0
216    0
217    0
218    0
219    0
220    0
221    0
#161
独木星空2021-11-18 07:06
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
bwjm="偶数周期表"
For j=221 to 238
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE G:\三角递增法\&wd in 0
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 5,12 say i
      n=i
      s=0
      IF MOD(n,5)=1
      s=s+30
      ENDIF
      IF MOD(n,5)=2
      s=s+90
      ENDIF
      IF MOD(n,5)=3
      s=s+120
      ENDIF
      IF MOD(n,5)=4
      s=s+180
      ENDIF
      IF MOD(n,5)=0
      s=s+210
      ENDIF
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 239
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是第14个外循环(也是最后一次外循环)
#162
独木星空2021-11-18 07:07
CLOSE DATA
USE G:\三角递增法\无偶数表总表.dbf && 设源表的名称为"表1"
P=''
FOR K=1 TO FCOUNT()
P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
ENDFOR

SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF G:\三角递增法\相同记录数表总14 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
USE IN   相同记录数表总14
接上楼
#163
独木星空2021-11-18 07:08
SELECT 1
USE G:\三角递增法\相同记录数表总14.DBF ALIAS 相同记录表14
SELECT 2
USE G:\三角递增法\无偶最终结果表新总14.DBF ALIAS 无偶结果表新14
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 570931
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=相同记录数
    B=无偶
    IF A=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH B     &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上楼
#164
独木星空2021-11-18 07:09
SELECT 1
USE G:\三角递增法\无偶最终结果表新总14.DBF ALIAS 无偶总新14
SELECT 2
USE G:\三角递增法\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=4642 to 4998
      @ 3,6 say j
      fw=j*1000000
            SELECT 1
            GO 1
            COUNT ALL FOR 无偶<=fw TO tj
              SELECT  2  
              APPEND BLANK   
              REPLACE 范围 WITH fw
              REPLACE 统计 WITH tj
     ENDFOR
   
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上楼(到此处理完毕)
#165
独木星空2021-11-18 07:11
无偶
4807984050
4874201190
4968988740
(最终结果,在17*2100万=3.57亿间,只有这三个反例了,最终反例会消失)
#166
独木星空2021-11-18 07:13
总区段    统计13
205    0
206    0
207    0
208    0
209    2
210    0
211    0
212    0
213    1
214    0
215    0
216    0
217    0
218    0
219    0
220    0
221    0
总区段    统计14
222    0
223    0
224    0
225    0
226    0
227    0
228    0
229    1
230    0
231    0
232    0
233    1
234    0
235    0
236    0
237    1
238    0
从214到228,15个区间段没有出现反例,跨越15*2100万=3.15亿
#167
laowan0012021-11-18 08:37
加上外循环了,试试看
程序代码:
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
bwjm="偶数周期表"

for m=2 to 14    && 这是所谓的外循环
For j=(m-1)*17 to (m-1)*17+17
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE G:\三角递增法\&wd in 0
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 5,12 say i
      n=i
      s=0
      IF MOD(n,5)=1
      s=s+30
      ENDIF
      IF MOD(n,5)=2
      s=s+90
      ENDIF
      IF MOD(n,5)=3
      s=s+120
      ENDIF
      IF MOD(n,5)=4
      s=s+180
      ENDIF
      IF MOD(n,5)=0
      s=s+210
      ENDIF
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         
        && SELECT 239
        && APPEND BLANK
        && REPLACE 无偶 WITH wou
        
        insert into 无偶数总表 (无偶) values (wou)    && 上面三名改成这一句

         ENDIF
        
        use in "偶数周期表"+ALLTRIM(STR(k))        && 用完就关闭,否则可能会崩
     ENDFOR
ENDFOR

endfor     && 这是所谓的外循环--结束


[此贴子已经被作者于2021-11-18 20:12编辑过]

#168
独木星空2021-11-18 20:47
范围    总个数    分个数
21000000    1530    1530
42000000    2491    961
63000000    3382    891
84000000    4189    807
105000000    4937    748
126000000    5644    707
147000000    6361    717
168000000    7060    699
189000000    7751    691
210000000    8400    649
231000000    8999    599
252000000    9629    630
273000000    10209    580
294000000    10804    595
315000000    11439    635
336000000    12025    586
357000000    12555    530
378000000    13115    560
399000000    13683    568
420000000    14247    564
441000000    14798    551
462000000    15328    530
483000000    15908    580
504000000    16436    528
525000000    16941    505
546000000    17471    530
567000000    17976    505
588000000    18512    536
609000000    19087    575
630000000    19590    503
651000000    20080    490
672000000    20582    502
693000000    21110    528
714000000    21592    482
735000000    22093    501
756000000    22613    520
777000000    23121    508
798000000    23617    496
819000000    24128    511
840000000    24619    491
861000000    25132    513
882000000    25633    501
903000000    26145    512
924000000    26622    477
945000000    27132    510
966000000    27631    499
987000000    28089    458
1008000000    28548    459
1029000000    29011    463
1050000000    29480    469
1071000000    29944    464
1092000000    30402    458
1113000000    30905    503
1134000000    31334    429
1155000000    31829    495
1176000000    32290    461
1197000000    32753    463
1218000000    33217    464
1239000000    33645    428
1260000000    34102    457
1281000000    34538    436
1302000000    34997    459
1323000000    35443    446
1344000000    35883    440
1365000000    36340    457
1386000000    36774    434
1407000000    37208    434
1428000000    37665    457
1449000000    38134    469
1470000000    38595    461
1491000000    39008    413
1512000000    39402    394
1533000000    39824    422
1554000000    40242    418
1575000000    40674    432
1596000000    41114    440
1617000000    41568    454
1638000000    42004    436
1659000000    42422    418
1680000000    42816    394
1701000000    43241    425
1722000000    43662    421
1743000000    44059    397
1764000000    44443    384
1785000000    44917    474
1806000000    45341    424
1827000000    45738    397
1848000000    46193    455
1869000000    46609    416
1890000000    47052    443
1911000000    47496    444
1932000000    47938    442
1953000000    48323    385
1974000000    48746    423
1995000000    49164    418
2016000000    49565    401
2037000000    49938    373
2058000000    50343    405
2079000000    50759    416
2100000000    51151    392
2121000000    51525    374
2142000000    51915    390
2163000000    52335    420
2184000000    52736    401
2205000000    53112    376
2226000000    53514    402
2247000000    53931    417
2268000000    54333    402
2289000000    54776    443
2310000000    55177    401
2331000000    55572    395
2352000000    55992    420
2373000000    56396    404
2394000000    56803    407
2415000000    57208    405
2436000000    57624    416
2457000000    57998    374
2478000000    58419    421
2499000000    58812    393
2520000000    59218    406
2541000000    59663    445
2562000000    60070    407
2583000000    60446    376
2604000000    60813    367
2625000000    61218    405
2646000000    61605    387
2667000000    62051    446
2688000000    62447    396
2709000000    62843    396
2730000000    63249    406
2751000000    63610    361
2772000000    64004    394
2793000000    64456    452
2814000000    64858    402
2835000000    65247    389
2856000000    65660    413
2877000000    66034    374
2898000000    66427    393
2919000000    66819    392
2940000000    67184    365
2961000000    67588    404
2982000000    67998    410
3003000000    68390    392
3024000000    68771    381
3045000000    69151    380
3066000000    69531    380
3087000000    69925    394
3108000000    70268    343
3129000000    70608    340
3150000000    70997    389
3171000000    71386    389
3192000000    71758    372
3213000000    72114    356
3234000000    72474    360
3255000000    72853    379
3276000000    73224    371
3297000000    73606    382
3318000000    73937    331
3339000000    74293    356
3360000000    74673    380
3381000000    75064    391
3402000000    75419    355
3423000000    75787    368
3444000000    76151    364
3465000000    76535    384
3486000000    76920    385
3507000000    77301    381
3528000000    77651    350
3549000000    78034    383
3570000000    78404    370
3591000000    78728    324
3612000000    79125    397
3633000000    79477    352
3654000000    79849    372
3675000000    80231    382
3696000000    80600    369
3717000000    80944    344
3738000000    81313    369
3759000000    81675    362
3780000000    82059    384
3801000000    82438    379
3822000000    82807    369
3843000000    83147    340
3864000000    83517    370
3885000000    83886    369
3906000000    84249    363
3927000000    84622    373
3948000000    84981    359
3969000000    85378    397
3990000000    85726    348
4011000000    86100    374
4032000000    86471    371
4053000000    86835    364
4074000000    87179    344
4095000000    87557    378
4116000000    87930    373
4137000000    88303    373
4158000000    88704    401
4179000000    89105    401
4200000000    89447    342
4221000000    89811    364
4242000000    90177    366
4263000000    90506    329
4284000000    90853    347
4305000000    91210    357
4326000000    91547    337
4347000000    91897    350
4368000000    92243    346
4389000000    92575    332
4410000000    92915    340
4431000000    93268    353
4452000000    93630    362
4473000000    93981    351
4494000000    94360    379
4515000000    94714    354
4536000000    95083    369
4557000000    95418    335
4578000000    95774    356
4599000000    96151    377
4620000000    96514    363
4641000000    96848    334
4662000000    97203    355
4683000000    97547    344
4704000000    97893    346
4725000000    98265    372
4746000000    98629    364
4767000000    98987    358
4788000000    99360    373
4809000000    99718    358
4830000000    100074    356
4851000000    100435    361
4872000000    100805    370
4893000000    101168    363
4914000000    101515    347
4935000000    101864    349
4956000000    102193    329
4977000000    102559    366
4998000000    102914    355
5019000000    103259    345
5040000000    103629    370
5061000000    103999    370
5082000000    104357    358
5103000000    104691    334
5124000000    105054    363
5145000000    105390    336
5166000000    105754    364
5187000000    106079    325
5208000000    106438    359
5229000000    106826    388
5250000000    107187    361
5271000000    107580    393
5292000000    107893    313
5313000000    108202    309
5334000000    108541    339
5355000000    108884    343
5376000000    109242    358
5397000000    109589    347
5418000000    109935    346
5439000000    110298    363
5460000000    110653    355
5481000000    111006    353
5502000000    111345    339
5523000000    111713    368
5544000000    112062    349
5565000000    112395    333
5586000000    112770    375
5607000000    113136    366
5628000000    113472    336
5649000000    113826    354
5670000000    114174    348
5691000000    114492    318
5712000000    114846    354
5733000000    115204    358
5754000000    115548    344
5775000000    115896    348
5796000000    116233    337
5817000000    116538    305
5838000000    116892    354
5859000000    117226    334
5880000000    117584    358
5901000000    117894    310
5922000000    118231    337
5943000000    118557    326
5964000000    118878    321
5985000000    119217    339
6006000000    119564    347
6027000000    119881    317
6048000000    120200    319
6069000000    120541    341
6090000000    120872    331
6111000000    121214    342
6132000000    121533    319
6153000000    121861    328
6174000000    122197    336
6195000000    122551    354
6216000000    122884    333
6237000000    123225    341
6258000000    123569    344
6279000000    123903    334
6300000000    124232    329
6321000000    124574    342
6342000000    124914    340
6363000000    125262    348
6384000000    125611    349
6405000000    125939    328
6426000000    126265    326
6447000000    126574    309
6468000000    126940    366
6489000000    127256    316
6510000000    127600    344
6531000000    127915    315
6552000000    128221    306
6573000000    128568    347
6594000000    128893    325
6615000000    129233    340
6636000000    129557    324
6657000000    129875    318
6678000000    130203    328
6699000000    130540    337
6720000000    130900    360
6741000000    131223    323
6762000000    131535    312
6783000000    131863    328
6804000000    132191    328
6825000000    132502    311
6846000000    132819    317
6867000000    133129    310
6888000000    133453    324
6909000000    133772    319
6930000000    134105    333
6951000000    134459    354
6972000000    134772    313
6993000000    135091    319
7014000000    135409    318
7035000000    135758    349
7056000000    136109    351
7077000000    136437    328
7098000000    136774    337
7119000000    137073    299
7140000000    137404    331
7161000000    137750    346
7182000000    138088    338
7203000000    138420    332
7224000000    138758    338
7245000000    139089    331
7266000000    139404    315
7287000000    139704    300
7308000000    140004    300
7329000000    140308    304
7350000000    140636    328
7371000000    140973    337
7392000000    141311    338
7413000000    141638    327
7434000000    141977    339
7455000000    142300    323
7476000000    142608    308
7497000000    142912    304
7518000000    143228    316
7539000000    143541    313
7560000000    143818    277
7581000000    144131    313
7602000000    144471    340
7623000000    144791    320
7644000000    145147    356
7665000000    145458    311
7686000000    145782    324
7707000000    146103    321
7728000000    146436    333
7749000000    146762    326
7770000000    147057    295
7791000000    147356    299
7812000000    147670    314
7833000000    148004    334
7854000000    148310    306
7875000000    148613    303
7896000000    148945    332
7917000000    149238    293
7938000000    149564    326
7959000000    149881    317
7980000000    150207    326
8001000000    150518    311
8022000000    150829    311
8043000000    151144    315
8064000000    151456    312
8085000000    151757    301
8106000000    152091    334
8127000000    152409    318
8148000000    152737    328
8169000000    153026    289
8190000000    153366    340
8211000000    153692    326
8232000000    154034    342
8253000000    154320    286
8274000000    154625    305
8295000000    154939    314
8316000000    155279    340
8337000000    155587    308
8358000000    155939    352
8379000000    156267    328
8400000000    156610    343
8421000000    156935    325
8442000000    157238    303
8463000000    157558    320
8484000000    157907    349
8505000000    158240    333
8526000000    158603    363
8547000000    158939    336
8568000000    159285    346
8589000000    159583    298
8610000000    159902    319
8631000000    160212    310
8652000000    160529    317
8673000000    160863    334
8694000000    161190    327
8715000000    161499    309
8736000000    161806    307
8757000000    162117    311
8778000000    162402    285
8799000000    162723    321
8820000000    163023    300
8841000000    163347    324
8862000000    163688    341
8883000000    163990    302
8904000000    164291    301
8925000000    164614    323
8946000000    164914    300
8967000000    165243    329
8988000000    165571    328
9009000000    165900    329
9030000000    166220    320
9051000000    166508    288
9072000000    166815    307
9093000000    167162    347
9114000000    167465    303
9135000000    167795    330
9156000000    168087    292
9177000000    168382    295
9198000000    168712    330
9219000000    169034    322
9240000000    169344    310
9261000000    169650    306
9282000000    169978    328
9303000000    170276    298
9324000000    170584    308
9345000000    170897    313
9366000000    171210    313
9387000000    171524    314
9408000000    171838    314
9429000000    172150    312
9450000000    172506    356
9471000000    172801    295
9492000000    173112    311
9513000000    173447    335
9534000000    173749    302
9555000000    174080    331
9576000000    174357    277
9597000000    174642    285
9618000000    174972    330
9639000000    175300    328
9660000000    175601    301
9681000000    175903    302
9702000000    176191    288
9723000000    176506    315
9744000000    176820    314
9765000000    177113    293
9786000000    177403    290
9807000000    177702    299
9828000000    178006    304
9849000000    178337    331
9870000000    178640    303
9891000000    178934    294
9912000000    179233    299
9933000000    179563    330
9954000000    179856    293
9975000000    180155    299
9996000000    180475    320
因为到50亿时,反例还未完全消失,所以又续了50亿
#169
独木星空2021-11-18 22:54
SELECT 477
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
bwjm="偶数周期表"
For j=238 to 255
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE G:\三角递增法\&wd in 0
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 5,12 say i
      n=i
      s=0
      IF MOD(n,5)=1
      s=s+30
      ENDIF
      IF MOD(n,5)=2
      s=s+90
      ENDIF
      IF MOD(n,5)=3
      s=s+120
      ENDIF
      IF MOD(n,5)=4
      s=s+180
      ENDIF
      IF MOD(n,5)=0
      s=s+210
      ENDIF
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 477
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
第15个外循环
#170
独木星空2021-11-18 22:54
CLOSE DATA
USE G:\三角递增法\无偶数表总表.dbf && 设源表的名称为"表1"
P=''
FOR K=1 TO FCOUNT()
P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
ENDFOR

SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF G:\三角递增法\相同记录数表总15 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
USE IN   相同记录数表总15
#171
独木星空2021-11-18 22:55
SELECT 1
USE G:\三角递增法\相同记录数表总15.DBF ALIAS 相同记录表15
SELECT 2
USE G:\三角递增法\无偶最终结果表新总15.DBF ALIAS 无偶结果表新15
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 544715
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=相同记录数
    B=无偶
    IF A=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH B     &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#172
独木星空2021-11-18 22:55
SELECT 1
USE G:\三角递增法\无偶最终结果表新总15.DBF ALIAS 无偶总新15
SELECT 2
USE G:\三角递增法\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=4999 to 5355
      @ 3,6 say j
      fw=j*1000000
            SELECT 1
            GO 1
            COUNT ALL FOR 无偶<=fw TO tj
              SELECT  2  
              APPEND BLANK   
              REPLACE 范围 WITH fw
              REPLACE 统计 WITH tj
     ENDFOR
   
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#173
独木星空2021-11-18 22:57
无偶
5172699390
在第15次外循环中,只有这一例反例(无解偶数)
#174
独木星空2021-11-18 22:59
总区段    统计15
239    0
240    0
241    0
242    0
243    0
244    0
245    0
246    0
247    1
248    0
249    0
250    0
251    0
252    0
253    0
254    0
255    0
前8个总区间段,后8个总区间段,都没有“反例”,中间的区间段有一个
#175
独木星空2021-11-19 16:17
回复 167楼 laowan001
SELECT 477
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
wozzxz="无偶最终结果表新总"
 For l=17 to 18
      @ 15,12 say l
      wozb=wozzxz+ALLTRIM(STR(l))
      USE IN 477
      USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
       SELECT 477
     
       DELETE ALL
       PACK
      
      
bwjm="偶数周期表"
For j=(l-1)*17 to 17*l
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE G:\三角递增法\&wd in 0
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 10,22 say i
      n=i
      s=0
    do case
    case MOD(n,5)=1
        s=s+30
    case MOD(n,5)=2
        s=s+90
    case MOD(n,5)=3
        s=s+120
    case MOD(n,5)=4
        s=s+180
    case MOD(n,5)=0
        s=s+210
    endcase
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         insert into 无偶数总表 (无偶) values (wou)    && 上面三名改成这一句
         ENDIF
   
     ENDFOR
     use in "偶数周期表"+ALLTRIM(STR(k))        && 用完就关闭,否则可能会崩溃
ENDFOR
SELECT * FROM 无偶数总表 WHERE 无偶 IN ( SELECT 无偶 FROM 无偶数总表 GROUP BY 无偶 HAVING count(*) > 1) order by 无偶 INTO table G:\三角递增法\&wozb
 use IN &wozb
 SELECT 477
 USE IN  477
 ENDFOR
 
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
第二步,第三步,第四步合并(除了第一步制作偶数周期表外,和最后一步的统计工作外,整个程序连为一体)
#176
独木星空2021-11-19 19:42
SELECT 477
USE d:\等差四生素数7\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
wozzxz="无偶最终结果表新总"
 For l=2 to 3
      @ 15,12 say l
      wozb=wozzxz+ALLTRIM(STR(l))
      USE IN 477
      USE d:\等差四生素数7\无偶数表总表.DBF ALIAS 无偶数总表
       SELECT 477
     
       DELETE ALL
       PACK
      
      
bwjm="偶数周期表"
For j=(l-1)*9 to 9*l
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE d:\等差四生素数7\&wd in 0
      For i=(j-1)*1050000+1 to (j+1)*1050000

      @ 10,22 say i
   && n=i
   && s=0
   && do case
   && case MOD(n,5)=1
   &&     s=s+30
   && case MOD(n,5)=2
   &&     s=s+90
   && case MOD(n,5)=3
   &&    s=s+120
   && case MOD(n,5)=4
   &&    s=s+180
   && case MOD(n,5)=0
   &&    s=s+210
   && endcase
     
   &&  wou=INT((n-1)/5)*210+s
      wou=2*i
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
         A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         insert into 无偶数总表 (无偶) values (wou)    && 上面三名改成这一句
         ENDIF
   
     ENDFOR
     use in "偶数周期表"+ALLTRIM(STR(k))        && 用完就关闭,否则可能会崩溃
ENDFOR
SELECT * FROM 无偶数总表 WHERE 无偶 IN ( SELECT 无偶 FROM 无偶数总表 GROUP BY 无偶 HAVING count(*) > 1) order by 无偶 INTO table d:\等差四生素数7\&wozb
 use IN &wozb
 SELECT 477
 USE IN  477
 ENDFOR
 
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是处理一个类似问题:等差四生素数(P,P+210,P+420,P+630)的中项和合成分布。
#177
独木星空2021-11-20 17:01
回复 176楼 独木星空
根据不同的条件,无偶的赋值也是不同的。
#178
独木星空2021-11-21 10:53
SELECT 477
USE d:\等差四生素数7\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
wozzxz="无偶最终结果表新总"
For l=2 to 2
      @ 15,12 say l
      wozb=wozzxz+ALLTRIM(STR(l))
      USE IN 477
      USE d:\等差四生素数7\无偶数表总表.DBF ALIAS 无偶数总表
       SELECT 477
     
       DELETE ALL
       PACK
      
      
bwjm="偶数周期表"
For j=(l-1)*9 to 9*l
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE d:\等差四生素数7\&wd in 0
      For i=(j-1)*1050000+1 to (j+1)*1050000

      @ 10,22 say i
   && n=i
   && s=0
   && do case
   && case MOD(n,5)=1
   &&     s=s+30
   && case MOD(n,5)=2
   &&     s=s+90
   && case MOD(n,5)=3
   &&    s=s+120
   && case MOD(n,5)=4
   &&    s=s+180
   && case MOD(n,5)=0
   &&    s=s+210
   && endcase
     
   &&  wou=INT((n-1)/5)*210+s
      wou=2*i
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
         A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         insert into 无偶数总表 (无偶) values (wou)    && 上面三名改成这一句
         ENDIF
   
     ENDFOR
     use in "偶数周期表"+ALLTRIM(STR(k))        && 用完就关闭,否则可能会崩溃
ENDFOR
SELECT * FROM 无偶数总表 WHERE 无偶 IN ( SELECT 无偶 FROM 无偶数总表 GROUP BY 无偶 HAVING count(*) > 1) order by 无偶 INTO table d:\等差四生素数7\&wozb
use IN &wozb
SELECT 477
USE IN  477
ENDFOR

    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是处理等差四生素数d210的程序步骤
#179
独木星空2021-11-21 10:54
SELECT 1
USE d:\等差四生素数7\无偶最终结果表新总2.DBF ALIAS 无偶终表2
SELECT 2
USE d:\等差四生素数7\无偶最终结果表新总2单.DBF ALIAS 无偶结果表新2单
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 274
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=无偶
   
    IF MOD(i,2)=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH A    &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上
#180
独木星空2021-11-21 10:56
SELECT 1
USE d:\等差四生素数7\无偶最终结果表新总2单.DBF ALIAS 无偶总新2单
SELECT 2
USE d:\等差四生素数7\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=91 to 180
      @ 3,6 say j
      fw=j*210000
            SELECT 1
            GO 1
            COUNT ALL FOR 无偶<=fw TO tj
              SELECT  2  
              APPEND BLANK   
              REPLACE 范围 WITH fw
              REPLACE 统计 WITH tj
     ENDFOR
   
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上,最后一步处理
#181
独木星空2021-11-21 10:56
总区段    统计2
10    38
11    38
12    22
13    15
14    4
15    10
16    6
17    3
18    1
处理结果
#182
laowan0012021-11-21 11:10
看你很喜欢记笔记,给你推荐一款好用的软件:有道云笔记。PC、PAD、手机可跨屏使用,真正的随时随地,把需要的东东记录下来

1、纷繁笔记轻松管理——分类整理笔记,高效管理个人知识,快速搜索,分类查找,安全备份云端笔记,存储永不丢失的珍贵资料。
2、文件同步自动完成——自动同步,无需拷贝下载:支持图片及文档类附件,无限增长的大存储空间,轻松实现多地点办公。
3、路上创意随手记录——随时随地记录一切趣事和想法:轻松与电脑双向同步,免去文件传输烦恼,对会议白板进行拍照,有道笔记将对照片进行智能优化,轻松保存会议结果。
4、精彩网页一键保存——一键保存网页中精彩图文,再也不会遗漏;云端存储,永久珍藏有价值的信息。
5、增量式同步技术——只同步每次修改的那部分内容,同步变得更快、更省流量。
6、手机端富文本编辑——在手机上也可以直接编辑含有丰富格式的笔记,提供一体化的跨终端编辑体验。
7、白板拍照智能优化——运用智能算法自动矫正歪斜的白板照片并去除冗余背景,一拍存档,您工作学习上的高效助手。
8、手写输入——用手指直接在屏幕上输入,保留手写原笔迹。
9、涂鸦——轻松、有趣的随手涂鸦,绘制您所想。
#183
独木星空2021-11-21 21:39
[原创]请教vfbpgyfk先生一个编程问题
http://www.
(出处: 数学中国)
我的vfp编程史
#184
独木星空2021-11-21 23:01
总区段        统计
1        39461
2        5403
3        1946
4        873
5        493
6        266
7        168
8        109
9        70
10        38
11        38
12        22
13        15
14        4
15        10
16        6
17        3
18        1
19        5
20        1
21        1
22        2
23        0
24        1
25        2
26        0
27        1
28        0
29        1
30        0
31        0
32        1
33        0
34        0
35        0
36        0
37        0
38        0
39        0
40        0
41        1
42        0
43        0
44        0
45        0
合计        48942
等差四生        素数d210
中项和合        成结果
最终完美        结果11.21
每个区间段跨越210万个自然数
这是等差四生素数d210的中项和,不能合成数的统计表,总共有48942个偶数无解。
#185
独木星空2021-11-22 11:02
回复 182楼 laowan001
多谢!laowan001版主给提的建议和详细介绍。
#186
独木星空2021-11-23 15:54
今天终于找到问题的症结。因为偶数周期表中出现了,非参照总表的记录值(正常情况下,参照表中包含所有应出现的记录值,即参照表为全集,而偶数周期表为子集),程序的依据就是把子集中没有的记录值找出来,但是需要一个条件,即偶数周期表中有全集中的值时,向下移动一条记录,如果始终没有满足条件,当参照表的记录循环一周,也找不到符合条件的记录,就没有下移,发生,导致程序失效。
#187
独木星空2021-11-23 16:08
造成上述原因,就是因为等差四生素数d30中,52的参与,mod(52,7)=3,不在运算之列,它是异数,不合群。
四中30    素数7
52    3
56    0
58    2
68    5
82    5
86    2
112    0
152    5
182    0
196    0
212    2
226    2
322    0
352    2
394    2
404    5
434    0
446    5
464    2
476    0
586    5
602    0
616    0
632    2
646    2
842    2
922    5
926    2
952    0
1078    0
1108    2
1274    0
1444    2
1538    5
1568    0
1612    2
1652    0
1708    0
1738    2
2084    5
2098    5
2252    5
2266    5
2296    0
2326    2
2396    2
2662    2
2704    2
2924    5
2954    0
3064    5
3316    5
3344    5
3346    0
3514    0
3628    2
3866    2
4034    2
4436    5
4606    0
4688    5
5486    5
5836    5
6158    5
6314    0
6344    2
6382    5
6536    5
6592    5
6718    5
6748    0
6778    2
7012    5
7502    5
7532    0
7544    5
7562    2
7838    5
8692    5
9014    5
9326    2
9476    5
9506    0
10054    2
10148    5
10178    0
10208    2
10288    5
10414    5
10544    2
10612    0
10642    2
11072    5
11482    2
11534    5
12026    0
12056    2
12502    0
12532    2
12938    2
素7余数    统计    状态
0    21917    正常
2    22011    正常
3    1    异常
5    21605    正常
合计    65534   
#188
独木星空2021-11-23 19:40
在运行等差四生素数d30时,出现一些状况,以前的程序不能正常运行,最终找到问题的症结,完全怪罪于异类四中52身上,因为mod(52,7)=3,并不合群,虽然具有等差四生素数d30的中项一切特征,但是它不在参与运算的元素当中,参与四中二元运算的所有元素,除了它是中项外,还需要满足模7余数为0,2,5(余数1,3,4,6不能参与二元运算)。
下边几楼是针对等差四生素数d30的程序,与以前的最密四生素数(0,2,6,8)的,还有等差四生素数d210的有少许不同之处,为了进一步简化程序,对数据的处理上,多数需要其他语句替代,尽量减小数据量,及存储数据,达到尽量小的占用空间。
#189
独木星空2021-11-23 19:41
SELECT 477
USE d:\等差四生素数\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
wozzxz="无偶最终结果表新总"
For l=2 to 2
      @ 15,12 say l
      wozb=wozzxz+ALLTRIM(STR(l))
      USE IN 477
      USE d:\等差四生素数\无偶数表总表.DBF ALIAS 无偶数总表
       SELECT 477
     
       DELETE ALL
       PACK
      
      
bwjm="偶数周期表"
For j=(l-1)*2 to 2*l
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE d:\等差四生素数\&wd in 0
      For i=(k-1)*750000+1 to (k+1)*750000

      @ 10,22 say i
    n=i
    s=0
    do case
    case MOD(n,5)=1
       s=s+2
    case MOD(n,5)=2
       s=s+4
    case MOD(n,5)=3
       s=s+10
    case MOD(n,5)=4
       s=s+12
    case MOD(n,5)=0
       s=s+14
    endcase
     
    wou=INT((n-1)/5)*14+s
    &&  wou=2*i
     
    && IF MOD(wou,7)=1 OR  MOD(wou,7)=6
    &&    LOOP
    && ENDIF
     
      SELECT "偶数周期表"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
         A=偶数
         IF A=wou
         SELECT "偶数周期表"+ALLTRIM(STR(k))
         SKIP
         && ?recno()
         LOOP
         ELSE
         insert into 无偶数总表 (无偶) values (wou)    && 上面三名改成这一句
         ENDIF
   
     ENDFOR
     use in "偶数周期表"+ALLTRIM(STR(k))        && 用完就关闭,否则可能会崩溃
ENDFOR
SELECT * FROM 无偶数总表 WHERE 无偶 IN ( SELECT 无偶 FROM 无偶数总表 GROUP BY 无偶 HAVING count(*) > 1) order by 无偶 INTO table d:\等差四生素数\&wozb
use IN &wozb
SELECT 477
USE IN  477
ENDFOR

    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
针对等差四生素数d30的程序
#190
独木星空2021-11-23 19:41
SELECT 1
USE d:\等差四生素数\无偶最终结果表新总2.DBF ALIAS 无偶终表2
SELECT 2
USE d:\等差四生素数\无偶最终结果表新总2单.DBF ALIAS 无偶结果表新2单
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 201682
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=无偶
   
    IF MOD(i,2)=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH A    &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#191
独木星空2021-11-23 19:41
SELECT 1
USE d:\等差四生素数\无偶最终结果表新总2单.DBF ALIAS 无偶总新2单
SELECT 2
USE d:\等差四生素数\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=21 to 40
      @ 3,6 say j
      fw=j*210000
            SELECT 1
            GO 1
            COUNT ALL FOR 无偶<=fw TO tj
              SELECT  2  
              APPEND BLANK   
              REPLACE 范围 WITH fw
              REPLACE 统计 WITH tj
     ENDFOR
   
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#192
独木星空2021-11-23 19:42
区段        范围        统计        各段个数        总区段
21        4410000        6627        6627        3
22        4620000        13006        6379        3
23        4830000        19228        6222        3
24        5040000        25308        6080        3
25        5250000        31317        6009        3
26        5460000        36962        5645        3
27        5670000        42338        5376        3
28        5880000        47563        5225        3
29        6090000        52760        5197        3
30        6300000        57836        5076        3
31        6510000        62452        4616        4
32        6720000        67189        4737        4
33        6930000        71729        4540        4
34        7140000        76136        4407        4
35        7350000        80575        4439        4
36        7560000        84821        4246        4
37        7770000        88946        4125        4
38        7980000        92999        4053        4
39        8190000        96851        3852        4
40        8400000        100841        3990        4
这是运行结果
#193
独木星空2021-11-23 19:42
总区段        统计2
3        57836
4        43005
正版书据
#194
独木星空2021-11-23 23:27
SELECT 1
USE d:\等差四生素数\四中d30.DBF ALIAS 四中表
SELECT 2
USE d:\等差四生素数\各段四生素数个数5.DBF ALIAS 四生个数表5
SELECT 3
USE d:\等差四生素数\偶数表新.DBF ALIAS 偶数表新
SELECT 4
USE d:\等差四生素数\数据源表.dbf ALIAS 数据源A
SELECT 5
USE d:\等差四生素数\数据表a.dbf ALIAS 数据A
kssj=SECONDS()
bwjm="偶数周期表"
bwjmzj="偶数周期表子集"
 For i=122 TO 123
      @ 5,12 say i
      wd=bwjm+ALLTRIM(STR(i-1))
      && USE IN 3
      && USE d:\等差四生素数\偶数表新.DBF ALIAS 偶数表新
       SELECT 3
     
       DELETE ALL
       PACK
       wdz=bwjmzj+ALLTRIM(STR(i-1)) &&子集表
      
       SELECT 5
       DELETE ALL
       PACK
       INSERT INTO 数据A (数据1) SELECT 偶元+(i-2)*2100000 FROM 数据源A
       FOR j=1 TO INT(i/2)
        @ 15,22 say j
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  2
        GO i-j
        zgs2=总个数
        fgs2=分个数
           SELECT 1
           GO zgs1-fgs1+1
               FOR k1=1  TO  fgs1
               A=四中30
               jl1=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 jl2=recno()
                 B=四中30
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 GO jl2+1
                 ENDFOR
               SELECT 1
               GO jl1+1
             ENDFOR   
          ENDFOR
       SELECT 3
       USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
       select * from 偶数表新.dbf DISTINCT INTO table d:\等差四生素数\&wd
       sele * from 数据A where 数据1 not in(sele 偶数 from &wd ) into table d:\等差四生素数\&wdz
       USE IN &wdz
      USE IN &wd
      
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
前三步,一步到位。
#195
独木星空2021-11-24 18:56
对于最密4生素数的中项和合成分布;等差四生素数d210中项和的分布;程序都没有问题,可是当处理等差四生素数d30时,却出现了怪异现象,偶数周期表中,指针停止了移动,说明没有满足条件的偶数使它移动,后来经过多方面的核对,才找到问题的症结,因为偶数周期表中,出现了异类偶数,即模7余1的偶数类,这在能合成的偶数中是没有的,所以遇到此类偶数,指针就永久的停止了,不在移动,造成所有的,都没合成方法,导致程序失败,没有获得正确的数据。归根到底是等差四生素数d30的中项52造成的,把它从中项中移去(即不让它参与运算),这才步入正规,又与前两类的四生素数一样了。
#196
独木星空2021-11-25 12:29
回复 195楼 独木星空
有时遇到问题也是一种机遇,因为在你处理问题时,会去想解决方案,而在想出来的方案中,会使原来的程序得到改良和优化(因为你必须处理所遇见的问题)。
#197
独木星空2021-11-25 13:59
SELECT 1
USE d:\等差四生素数\偶数周期表子集总表.DBF ALIAS 子集总表

kssj=SECONDS()

bwjmzj="偶数周期表子集"
 For i=122 TO 259
      @ 5,12 say i
       wdz=bwjmzj+ALLTRIM(STR(i)) &&子集表
     SELECT 1
     APPEND FROM d:\等差四生素数\&wdz
 ENDFOR
 
 =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")  
这是把所有表的记录追加到同一个表上的程序
#198
独木星空2021-11-26 20:23
大分区    统计
122    79
123    85
124    78
125    73
126    62
127    69
128    76
129    68
130    65
131    63
132    61
133    60
134    66
135    69
136    56
137    63
138    42
139    49
140    48
141    44
142    54
143    50
144    38
145    47
146    41
147    39
148    37
149    42
150    45
151    35
152    44
153    24
154    38
155    28
156    34
157    26
158    22
159    25
160    37
161    26
162    33
163    31
164    15
165    19
166    27
167    19
168    16
169    28
170    25
171    16
172    22
173    22
174    24
175    13
176    28
177    19
178    18
179    16
180    21
181    20
182    18
183    16
184    14
185    15
186    20
187    20
188    19
189    11
190    11
191    14
192    17
193    16
194    12
195    18
196    12
197    8
198    11
199    11
200    20
201    11
202    13
203    13
204    13
205    12
206    11
207    13
208    16
209    14
210    13
211    14
212    5
213    9
214    4
215    12
216    14
217    10
218    11
219    7
220    11
221    9
222    7
223    7
224    10
225    6
226    4
227    6
228    12
229    8
230    10
231    4
232    4
233    6
234    8
235    2
236    3
237    6
238    4
239    4
240    6
241    3
242    6
243    6
244    7
245    4
246    3
247    9
248    5
249    3
250    6
251    5
252    3
253    8
254    1
255    5
256    5
257    5
258    3
259    3
这是等差四生素数d30的中项和无解偶数的分布数据(大分区,每区跨过210万个自然数),安走势看,很快就没有了(无解偶数)。
#199
独木星空2021-11-28 19:01
SELECT 1
USE d:\最密三生素数\三生素数d42.DBF ALIAS 三中表
SELECT 2
USE d:\最密三生素数\各段三生素数个数42.DBF ALIAS 三生个数表42
SELECT 3
USE d:\最密三生素数\偶数表新.DBF ALIAS 偶数表新
SELECT 4
USE d:\最密三生素数\数据源表逆.dbf ALIAS 数据源A
SELECT 5
USE d:\最密三生素数\数据表a.dbf ALIAS 数据A
kssj=SECONDS()
bwjm="偶数周期表逆"
bwjmzj="偶数周期表子集逆"
 For i=2 TO 101
      @ 5,12 say i
      wd=bwjm+ALLTRIM(STR(i-1))
      && USE IN 3
      && USE d:\等差四生素数\偶数表新.DBF ALIAS 偶数表新
       SELECT 3
     
       DELETE ALL
       PACK
       wdz=bwjmzj+ALLTRIM(STR(i-1)) &&子集表
      
       SELECT 5
       DELETE ALL
       PACK
       INSERT INTO 数据A (数据1) SELECT 偶元+(i-2)*210000 FROM 数据源A
       FOR j=1 TO INT(i/2)
        @ 15,22 say j
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  2
        GO i-j
        zgs2=总个数
        fgs2=分个数
           SELECT 1
           GO zgs1-fgs1+1
               FOR k1=1  TO  fgs1
               A=三中42
               jl1=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 jl2=recno()
                 B=三中42
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 GO jl2+1
                 ENDFOR
               SELECT 1
               GO jl1+1
             ENDFOR   
          ENDFOR
       SELECT 3
       USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
       select * from 偶数表新.dbf DISTINCT INTO table d:\最密三生素数\&wd
       sele * from 数据A where 数据1 not in(sele 偶数 from &wd ) into table d:\最密三生素数\&wdz
       USE IN &wdz
      USE IN &wd
      
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#200
独木星空2021-11-28 22:56
区段    范围    统计    各段个数
1    210000    2632    2632
2    420000    3164    532
3    630000    3415    251
4    840000    3559    144
5    1050000    3656    97
6    1260000    3728    72
7    1470000    3762    34
8    1680000    3786    24
9    1890000    3808    22
10    2100000    3825    17
11    2310000    3833    8
12    2520000    3850    17
13    2730000    3858    8
14    2940000    3867    9
15    3150000    3870    3
16    3360000    3877    7
17    3570000    3879    2
18    3780000    3882    3
19    3990000    3883    1
20    4200000    3884    1
21    4410000    3888    4
22    4620000    3891    3
23    4830000    3893    2
24    5040000    3893    0
25    5250000    3894    1
26    5460000    3895    1
27    5670000    3897    2
28    5880000    3898    1
29    6090000    3899    1
30    6300000    3899    0
31    6510000    3899    0
32    6720000    3899    0
33    6930000    3899    0
34    7140000    3899    0
35    7350000    3900    1
36    7560000    3901    1
37    7770000    3901    0
38    7980000    3901    0
39    8190000    3901    0
40    8400000    3901    0
41    8610000    3901    0
42    8820000    3901    0
43    9030000    3901    0
44    9240000    3901    0
45    9450000    3901    0
46    9660000    3901    0
47    9870000    3901    0
48    10080000    3901    0
49    10290000    3901    0
50    10500000    3901    0
51    10710000    3901    0
52    10920000    3901    0
53    11130000    3901    0
54    11340000    3901    0
55    11550000    3901    0
56    11760000    3901    0
57    11970000    3901    0
58    12180000    3902    1
最密三生素数(P,P+4,P+6)的中项和合成分布,无解偶数的最终结果
#201
独木星空2021-11-28 22:57
SELECT 1
USE d:\最密三生素数\等差三生素数d6.DBF ALIAS 三中表
SELECT 2
USE d:\最密三生素数\各段三生素数个数d6.DBF ALIAS 三生个数表d6
SELECT 3
USE d:\最密三生素数\偶数表新.DBF ALIAS 偶数表新
SELECT 4
USE d:\最密三生素数\数据源表d6.dbf ALIAS 数据源A
SELECT 5
USE d:\最密三生素数\数据表a.dbf ALIAS 数据A
kssj=SECONDS()
bwjm="偶数周期表d六"
bwjmzj="偶数周期表子集d六"
 For i=2 TO 101
      @ 5,12 say i
      wd=bwjm+ALLTRIM(STR(i-1))
      && USE IN 3
      && USE d:\等差四生素数\偶数表新.DBF ALIAS 偶数表新
       SELECT 3
     
       DELETE ALL
       PACK
       wdz=bwjmzj+ALLTRIM(STR(i-1)) &&子集表
      
       SELECT 5
       DELETE ALL
       PACK
       INSERT INTO 数据A (数据1) SELECT 偶元+(i-2)*210000 FROM 数据源A
       FOR j=1 TO INT(i/2)
        @ 15,22 say j
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  2
        GO i-j
        zgs2=总个数
        fgs2=分个数
           SELECT 1
           GO zgs1-fgs1+1
               FOR k1=1  TO  fgs1
               A=d6三中
               jl1=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 jl2=recno()
                 B=d6三中
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 GO jl2+1
                 ENDFOR
               SELECT 1
               GO jl1+1
             ENDFOR   
          ENDFOR
       SELECT 3
       USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
       select * from 偶数表新.dbf DISTINCT INTO table d:\最密三生素数\&wd
       sele * from 数据A where 数据1 not in(sele 偶数 from &wd ) into table d:\最密三生素数\&wdz
       USE IN &wdz
      USE IN &wd
      
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
123456