注册 登录
编程论坛 VFP论坛

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

独木星空 发布于 2021-10-17 19:31, 13652 次点击
* 以大定小选配素数对
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 回复
#102
Bc_Newboy2021-11-01 08:32
研究素数的都是大师。数字间有*号字符,是不是要表示:偶数之间,还有很多奇数的非素数
#103
独木星空2021-11-01 09:47
回复 102楼 Bc_Newboy
编程与素数无关联,不过我是因为对素数问题感兴趣,才学习编程的。*的出现是与突然停电造成的,我用的外置硬盘,而且程序在运行,造成文件损坏,各种怪异问题都出来了。
#104
独木星空2021-11-02 06:52
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:\三角递增法\相同记录数表总3 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
USE IN   相同记录数表总3  &&加了此语句后,不需要关闭程序,相同记录数表总3就有了记录,不在是0,没有加之前,dfb中无记录,也打不开,只有关闭程序才可以。
第二步
#105
独木星空2021-11-03 07:12
当把最密4生素数中项和的分布情况处理清后,在进入等差四生素数的分布分析,然后降级到最密3生素数中项和的分布分析。连程序,带结果以便发上来。
#106
独木星空2021-11-05 12:06
因为时间的原因,月底,月初,比较忙,还没有时间,把这种方法运用到最密3生素数中项和的分布上。
#107
独木星空2021-11-09 17:26
SELECT 1
USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\二生d30.DBF ALIAS 二生素数表
kssj=SECONDS()
 For i=1 to 50876300
      @ 5,12 say i
    SELECT  1     
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 9
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二素 WITH A+30      
         REPLACE 记录2 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 1
   GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#108
独木星空2021-11-09 20:13
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 68
USE G:\三角递增法\偶数周期表68.DBF ALIAS 偶周期68
SELECT 69
USE G:\三角递增法\偶数周期表69.DBF ALIAS 偶周期69
SELECT 70
USE G:\三角递增法\偶数周期表70.DBF ALIAS 偶周期70
SELECT 71
USE G:\三角递增法\偶数周期表71.DBF ALIAS 偶周期71
SELECT 72
USE G:\三角递增法\偶数周期表72.DBF ALIAS 偶周期72
SELECT 73
USE G:\三角递增法\偶数周期表73.DBF ALIAS 偶周期73
SELECT 74
USE G:\三角递增法\偶数周期表74.DBF ALIAS 偶周期74
SELECT 75
USE G:\三角递增法\偶数周期表75.DBF ALIAS 偶周期75
SELECT 76
USE G:\三角递增法\偶数周期表76.DBF ALIAS 偶周期76
SELECT 77
USE G:\三角递增法\偶数周期表77.DBF ALIAS 偶周期77
SELECT 78
USE G:\三角递增法\偶数周期表78.DBF ALIAS 偶周期78
SELECT 79
USE G:\三角递增法\偶数周期表79.DBF ALIAS 偶周期79
SELECT 80
USE G:\三角递增法\偶数周期表80.DBF ALIAS 偶周期80
SELECT 81
USE G:\三角递增法\偶数周期表81.DBF ALIAS 偶周期81
SELECT 82
USE G:\三角递增法\偶数周期表82.DBF ALIAS 偶周期82
SELECT 83
USE G:\三角递增法\偶数周期表83.DBF ALIAS 偶周期83
SELECT 84
USE G:\三角递增法\偶数周期表84.DBF ALIAS 偶周期84
SELECT 85
USE G:\三角递增法\偶数周期表85.DBF ALIAS 偶周期85
kssj=SECONDS()
bwjm="偶周期"
For j=68 to 85
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

&& SELECT 1  && 未使用的工作区
 && USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      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,"运行时间提示")
第一步
#109
独木星空2021-11-09 20:13
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:\三角递增法\相同记录数表总5 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
USE IN   相同记录数表总5
第二步
#110
独木星空2021-11-09 20:14
SELECT 1
USE G:\三角递增法\相同记录数表总5.DBF ALIAS 相同记录表5
SELECT 2
USE G:\三角递增法\无偶最终结果表新总5.DBF ALIAS 无偶结果表新5
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 1086460
      @ 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,"运行时间提示")
第三步
#111
独木星空2021-11-09 20:15
SELECT 1
USE G:\三角递增法\无偶最终结果表新总5.DBF ALIAS 无偶总新5
SELECT 2
USE G:\三角递增法\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=1429 to 1785
      @ 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,"运行时间提示")
第四步
#112
独木星空2021-11-09 20:15
区段    范围    统计    各段个数    总区段
1429    1429000000    1    1    69
1430    1430000000    3    2    69
1431    1431000000    6    3    69
1432    1432000000    9    3    69
1433    1433000000    13    4    69
1434    1434000000    14    1    69
1435    1435000000    18    4    69
1436    1436000000    20    2    69
1437    1437000000    28    8    69
1438    1438000000    29    1    69
1439    1439000000    31    2    69
1440    1440000000    36    5    69
1441    1441000000    39    3    69
1442    1442000000    40    1    69
1443    1443000000    42    2    69
1444    1444000000    46    4    69
1445    1445000000    51    5    69
1446    1446000000    53    2    69
1447    1447000000    54    1    69
1448    1448000000    58    4    69
1449    1449000000    59    1    70
1450    1450000000    64    5    70
1451    1451000000    68    4    70
1452    1452000000    69    1    70
1453    1453000000    73    4    70
1454    1454000000    73    0    70
1455    1455000000    75    2    70
1456    1456000000    80    5    70
1457    1457000000    81    1    70
1458    1458000000    85    4    70
1459    1459000000    89    4    70
1460    1460000000    91    2    70
1461    1461000000    96    5    70
1462    1462000000    102    6    70
1463    1463000000    108    6    70
1464    1464000000    113    5    70
1465    1465000000    116    3    70
1466    1466000000    117    1    70
1467    1467000000    120    3    70
1468    1468000000    121    1    70
1469    1469000000    126    5    70
1470    1470000000    129    3    71
1471    1471000000    130    1    71
1472    1472000000    135    5    71
1473    1473000000    139    4    71
1474    1474000000    141    2    71
1475    1475000000    145    4    71
1476    1476000000    148    3    71
1477    1477000000    151    3    71
1478    1478000000    152    1    71
1479    1479000000    156    4    71
1480    1480000000    162    6    71
1481    1481000000    167    5    71
1482    1482000000    171    4    71
1483    1483000000    177    6    71
1484    1484000000    180    3    71
1485    1485000000    185    5    71
1486    1486000000    187    2    71
1487    1487000000    190    3    71
1488    1488000000    192    2    71
1489    1489000000    193    1    71
1490    1490000000    197    4    71
1491    1491000000    199    2    72
1492    1492000000    203    4    72
1493    1493000000    206    3    72
1494    1494000000    212    6    72
1495    1495000000    215    3    72
1496    1496000000    219    4    72
1497    1497000000    221    2    72
1498    1498000000    225    4    72
1499    1499000000    226    1    72
1500    1500000000    233    7    72
1501    1501000000    238    5    72
1502    1502000000    242    4    72
1503    1503000000    245    3    72
1504    1504000000    248    3    72
1505    1505000000    251    3    72
1506    1506000000    253    2    72
1507    1507000000    257    4    72
1508    1508000000    259    2    72
1509    1509000000    262    3    72
1510    1510000000    265    3    72
1511    1511000000    269    4    72
1512    1512000000    270    1    73
1513    1513000000    273    3    73
1514    1514000000    278    5    73
1515    1515000000    282    4    73
1516    1516000000    286    4    73
1517    1517000000    293    7    73
1518    1518000000    295    2    73
1519    1519000000    299    4    73
1520    1520000000    302    3    73
1521    1521000000    307    5    73
1522    1522000000    310    3    73
1523    1523000000    312    2    73
1524    1524000000    315    3    73
1525    1525000000    321    6    73
1526    1526000000    326    5    73
1527    1527000000    327    1    73
1528    1528000000    328    1    73
1529    1529000000    330    2    73
1530    1530000000    333    3    73
1531    1531000000    338    5    73
1532    1532000000    339    1    73
1533    1533000000    345    6    74
1534    1534000000    347    2    74
1535    1535000000    353    6    74
1536    1536000000    355    2    74
1537    1537000000    361    6    74
1538    1538000000    363    2    74
1539    1539000000    370    7    74
1540    1540000000    374    4    74
1541    1541000000    376    2    74
1542    1542000000    378    2    74
1543    1543000000    380    2    74
1544    1544000000    383    3    74
1545    1545000000    384    1    74
1546    1546000000    387    3    74
1547    1547000000    389    2    74
1548    1548000000    391    2    74
1549    1549000000    391    0    74
1550    1550000000    395    4    74
1551    1551000000    396    1    74
1552    1552000000    396    0    74
1553    1553000000    398    2    74
1554    1554000000    403    5    75
1555    1555000000    405    2    75
1556    1556000000    407    2    75
1557    1557000000    411    4    75
1558    1558000000    414    3    75
1559    1559000000    420    6    75
1560    1560000000    421    1    75
1561    1561000000    421    0    75
1562    1562000000    421    0    75
1563    1563000000    423    2    75
1564    1564000000    427    4    75
1565    1565000000    427    0    75
1566    1566000000    434    7    75
1567    1567000000    437    3    75
1568    1568000000    443    6    75
1569    1569000000    445    2    75
1570    1570000000    449    4    75
1571    1571000000    452    3    75
1572    1572000000    453    1    75
1573    1573000000    458    5    75
1574    1574000000    464    6    75
1575    1575000000    465    1    76
1576    1576000000    467    2    76
1577    1577000000    468    1    76
1578    1578000000    474    6    76
1579    1579000000    479    5    76
1580    1580000000    482    3    76
1581    1581000000    485    3    76
1582    1582000000    488    3    76
1583    1583000000    490    2    76
1584    1584000000    490    0    76
1585    1585000000    492    2    76
1586    1586000000    497    5    76
1587    1587000000    499    2    76
1588    1588000000    503    4    76
1589    1589000000    508    5    76
1590    1590000000    510    2    76
1591    1591000000    515    5    76
1592    1592000000    517    2    76
1593    1593000000    519    2    76
1594    1594000000    524    5    76
1595    1595000000    525    1    76
1596    1596000000    526    1    77
1597    1597000000    531    5    77
1598    1598000000    534    3    77
1599    1599000000    535    1    77
1600    1600000000    537    2    77
1601    1601000000    544    7    77
1602    1602000000    544    0    77
1603    1603000000    546    2    77
1604    1604000000    549    3    77
1605    1605000000    550    1    77
1606    1606000000    551    1    77
1607    1607000000    554    3    77
1608    1608000000    555    1    77
1609    1609000000    559    4    77
1610    1610000000    561    2    77
1611    1611000000    563    2    77
1612    1612000000    564    1    77
1613    1613000000    566    2    77
1614    1614000000    570    4    77
1615    1615000000    572    2    77
1616    1616000000    574    2    77
1617    1617000000    576    2    78
1618    1618000000    578    2    78
1619    1619000000    580    2    78
1620    1620000000    581    1    78
1621    1621000000    585    4    78
1622    1622000000    586    1    78
1623    1623000000    586    0    78
1624    1624000000    588    2    78
1625    1625000000    589    1    78
1626    1626000000    592    3    78
1627    1627000000    598    6    78
1628    1628000000    599    1    78
1629    1629000000    602    3    78
1630    1630000000    606    4    78
1631    1631000000    607    1    78
1632    1632000000    608    1    78
1633    1633000000    610    2    78
1634    1634000000    616    6    78
1635    1635000000    619    3    78
1636    1636000000    619    0    78
1637    1637000000    621    2    78
1638    1638000000    622    1    79
1639    1639000000    622    0    79
1640    1640000000    622    0    79
1641    1641000000    623    1    79
1642    1642000000    627    4    79
1643    1643000000    630    3    79
1644    1644000000    631    1    79
1645    1645000000    634    3    79
1646    1646000000    635    1    79
1647    1647000000    639    4    79
1648    1648000000    643    4    79
1649    1649000000    647    4    79
1650    1650000000    654    7    79
1651    1651000000    659    5    79
1652    1652000000    662    3    79
1653    1653000000    665    3    79
1654    1654000000    667    2    79
1655    1655000000    669    2    79
1656    1656000000    670    1    79
1657    1657000000    671    1    79
1658    1658000000    672    1    79
1659    1659000000    675    3    80
1660    1660000000    678    3    80
1661    1661000000    680    2    80
1662    1662000000    681    1    80
1663    1663000000    683    2    80
1664    1664000000    686    3    80
1665    1665000000    688    2    80
1666    1666000000    693    5    80
1667    1667000000    697    4    80
1668    1668000000    703    6    80
1669    1669000000    704    1    80
1670    1670000000    709    5    80
1671    1671000000    710    1    80
1672    1672000000    714    4    80
1673    1673000000    716    2    80
1674    1674000000    720    4    80
1675    1675000000    721    1    80
1676    1676000000    722    1    80
1677    1677000000    726    4    80
1678    1678000000    730    4    80
1679    1679000000    731    1    80
1680    1680000000    732    1    81
1681    1681000000    735    3    81
1682    1682000000    738    3    81
1683    1683000000    740    2    81
1684    1684000000    741    1    81
1685    1685000000    742    1    81
1686    1686000000    743    1    81
1687    1687000000    745    2    81
1688    1688000000    748    3    81
1689    1689000000    750    2    81
1690    1690000000    754    4    81
1691    1691000000    759    5    81
1692    1692000000    761    2    81
1693    1693000000    763    2    81
1694    1694000000    763    0    81
1695    1695000000    766    3    81
1696    1696000000    768    2    81
1697    1697000000    770    2    81
1698    1698000000    772    2    81
1699    1699000000    772    0    81
1700    1700000000    774    2    81
1701    1701000000    776    2    82
1702    1702000000    780    4    82
1703    1703000000    780    0    82
1704    1704000000    782    2    82
1705    1705000000    786    4    82
1706    1706000000    787    1    82
1707    1707000000    789    2    82
1708    1708000000    791    2    82
1709    1709000000    797    6    82
1710    1710000000    798    1    82
1711    1711000000    801    3    82
1712    1712000000    804    3    82
1713    1713000000    806    2    82
1714    1714000000    807    1    82
1715    1715000000    807    0    82
1716    1716000000    808    1    82
1717    1717000000    811    3    82
1718    1718000000    812    1    82
1719    1719000000    814    2    82
1720    1720000000    817    3    82
1721    1721000000    820    3    82
1722    1722000000    820    0    83
1723    1723000000    820    0    83
1724    1724000000    823    3    83
1725    1725000000    825    2    83
1726    1726000000    828    3    83
1727    1727000000    829    1    83
1728    1728000000    833    4    83
1729    1729000000    835    2    83
1730    1730000000    837    2    83
1731    1731000000    838    1    83
1732    1732000000    841    3    83
1733    1733000000    841    0    83
1734    1734000000    842    1    83
1735    1735000000    844    2    83
1736    1736000000    845    1    83
1737    1737000000    847    2    83
1738    1738000000    848    1    83
1739    1739000000    850    2    83
1740    1740000000    850    0    83
1741    1741000000    853    3    83
1742    1742000000    855    2    83
1743    1743000000    857    2    84
1744    1744000000    859    2    84
1745    1745000000    860    1    84
1746    1746000000    861    1    84
1747    1747000000    864    3    84
1748    1748000000    865    1    84
1749    1749000000    866    1    84
1750    1750000000    866    0    84
1751    1751000000    867    1    84
1752    1752000000    867    0    84
1753    1753000000    869    2    84
1754    1754000000    871    2    84
1755    1755000000    875    4    84
1756    1756000000    876    1    84
1757    1757000000    879    3    84
1758    1758000000    881    2    84
1759    1759000000    881    0    84
1760    1760000000    882    1    84
1761    1761000000    883    1    84
1762    1762000000    885    2    84
1763    1763000000    887    2    84
1764    1764000000    891    4    85
1765    1765000000    891    0    85
1766    1766000000    895    4    85
1767    1767000000    896    1    85
1768    1768000000    898    2    85
1769    1769000000    900    2    85
1770    1770000000    903    3    85
1771    1771000000    904    1    85
1772    1772000000    906    2    85
1773    1773000000    908    2    85
1774    1774000000    909    1    85
1775    1775000000    911    2    85
1776    1776000000    913    2    85
1777    1777000000    914    1    85
1778    1778000000    919    5    85
1779    1779000000    921    2    85
1780    1780000000    923    2    85
1781    1781000000    926    3    85
1782    1782000000    928    2    85
1783    1783000000    929    1    85
1784    1784000000    929    0    85
1785    1785000000    930    1    86
最终成果
#113
独木星空2021-11-09 20:16
总区段    统计
69    58
70    68
71    71
72    72
73    70
74    59
75    66
76    61
77    49
78    47
79    51
80    59
81    43
82    46
83    35
84    32
85    42
86    1
高度汇总
#114
独木星空2021-11-09 20:17
希望把四步连篇成一个程序
#115
独木星空2021-11-09 21:34

USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\二生d210.DBF ALIAS 二生素数表
kssj=SECONDS()
 For i=1 to 50876200
      @ 5,12 say i
    SELECT  1     
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 48
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=210
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二素 WITH A+210     
         REPLACE 记录2 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 1
   GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#116
独木星空2021-11-10 07:42
SELECT 1
USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\二生d30.DBF ALIAS 二生素数表
kssj=SECONDS()
 For i=1 to 50876300
      @ 5,12 say i
    SELECT  1     
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 9
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二素 WITH A+30      
         REPLACE 记录2 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 1
   GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
有素数表制作给定的二生素数,在二生素数的基础上制作三生素数,再制作四生素数。
#117
独木星空2021-11-10 07:44
区段    范围    统计    各段个数    总区段
1786    1786000000    2    2    86
1787    1787000000    3    1    86
1788    1788000000    4    1    86
1789    1789000000    4    0    86
1790    1790000000    7    3    86
1791    1791000000    8    1    86
1792    1792000000    9    1    86
1793    1793000000    11    2    86
1794    1794000000    11    0    86
1795    1795000000    12    1    86
1796    1796000000    13    1    86
1797    1797000000    15    2    86
1798    1798000000    19    4    86
1799    1799000000    21    2    86
1800    1800000000    23    2    86
1801    1801000000    26    3    86
1802    1802000000    27    1    86
1803    1803000000    29    2    86
1804    1804000000    32    3    86
1805    1805000000    36    4    86
1806    1806000000    36    0    87
1807    1807000000    38    2    87
1808    1808000000    38    0    87
1809    1809000000    42    4    87
1810    1810000000    43    1    87
1811    1811000000    44    1    87
1812    1812000000    47    3    87
1813    1813000000    49    2    87
1814    1814000000    51    2    87
1815    1815000000    56    5    87
1816    1816000000    62    6    87
1817    1817000000    63    1    87
1818    1818000000    65    2    87
1819    1819000000    67    2    87
1820    1820000000    67    0    87
1821    1821000000    69    2    87
1822    1822000000    70    1    87
1823    1823000000    72    2    87
1824    1824000000    72    0    87
1825    1825000000    74    2    87
1826    1826000000    77    3    87
1827    1827000000    78    1    88
1828    1828000000    81    3    88
1829    1829000000    81    0    88
1830    1830000000    82    1    88
1831    1831000000    82    0    88
1832    1832000000    85    3    88
1833    1833000000    88    3    88
1834    1834000000    90    2    88
1835    1835000000    90    0    88
1836    1836000000    93    3    88
1837    1837000000    95    2    88
1838    1838000000    97    2    88
1839    1839000000    98    1    88
1840    1840000000    100    2    88
1841    1841000000    102    2    88
1842    1842000000    103    1    88
1843    1843000000    106    3    88
1844    1844000000    107    1    88
1845    1845000000    109    2    88
1846    1846000000    109    0    88
1847    1847000000    109    0    88
1848    1848000000    109    0    89
1849    1849000000    112    3    89
1850    1850000000    114    2    89
1851    1851000000    115    1    89
1852    1852000000    117    2    89
1853    1853000000    122    5    89
1854    1854000000    125    3    89
1855    1855000000    128    3    89
1856    1856000000    129    1    89
1857    1857000000    130    1    89
1858    1858000000    131    1    89
1859    1859000000    133    2    89
1860    1860000000    133    0    89
1861    1861000000    134    1    89
1862    1862000000    134    0    89
1863    1863000000    134    0    89
1864    1864000000    134    0    89
1865    1865000000    137    3    89
1866    1866000000    138    1    89
1867    1867000000    139    1    89
1868    1868000000    139    0    89
1869    1869000000    139    0    90
1870    1870000000    142    3    90
1871    1871000000    143    1    90
1872    1872000000    144    1    90
1873    1873000000    144    0    90
1874    1874000000    147    3    90
1875    1875000000    149    2    90
1876    1876000000    150    1    90
1877    1877000000    150    0    90
1878    1878000000    151    1    90
1879    1879000000    153    2    90
1880    1880000000    154    1    90
1881    1881000000    156    2    90
1882    1882000000    160    4    90
1883    1883000000    161    1    90
1884    1884000000    162    1    90
1885    1885000000    165    3    90
1886    1886000000    166    1    90
1887    1887000000    167    1    90
1888    1888000000    168    1    90
1889    1889000000    171    3    90
1890    1890000000    171    0    91
1891    1891000000    172    1    91
1892    1892000000    172    0    91
1893    1893000000    174    2    91
1894    1894000000    174    0    91
1895    1895000000    175    1    91
1896    1896000000    176    1    91
1897    1897000000    178    2    91
1898    1898000000    180    2    91
1899    1899000000    182    2    91
1900    1900000000    182    0    91
1901    1901000000    183    1    91
1902    1902000000    185    2    91
1903    1903000000    186    1    91
1904    1904000000    187    1    91
1905    1905000000    187    0    91
1906    1906000000    189    2    91
1907    1907000000    190    1    91
1908    1908000000    190    0    91
1909    1909000000    192    2    91
1910    1910000000    194    2    91
1911    1911000000    196    2    92
1912    1912000000    197    1    92
1913    1913000000    199    2    92
1914    1914000000    199    0    92
1915    1915000000    201    2    92
1916    1916000000    202    1    92
1917    1917000000    203    1    92
1918    1918000000    204    1    92
1919    1919000000    205    1    92
1920    1920000000    205    0    92
1921    1921000000    207    2    92
1922    1922000000    210    3    92
1923    1923000000    212    2    92
1924    1924000000    212    0    92
1925    1925000000    214    2    92
1926    1926000000    214    0    92
1927    1927000000    215    1    92
1928    1928000000    215    0    92
1929    1929000000    215    0    92
1930    1930000000    217    2    92
1931    1931000000    218    1    92
1932    1932000000    219    1    93
1933    1933000000    222    3    93
1934    1934000000    222    0    93
1935    1935000000    224    2    93
1936    1936000000    224    0    93
1937    1937000000    224    0    93
1938    1938000000    224    0    93
1939    1939000000    224    0    93
1940    1940000000    224    0    93
1941    1941000000    226    2    93
1942    1942000000    227    1    93
1943    1943000000    229    2    93
1944    1944000000    230    1    93
1945    1945000000    231    1    93
1946    1946000000    233    2    93
1947    1947000000    234    1    93
1948    1948000000    236    2    93
1949    1949000000    237    1    93
1950    1950000000    238    1    93
1951    1951000000    241    3    93
1952    1952000000    242    1    93
1953    1953000000    245    3    94
1954    1954000000    248    3    94
1955    1955000000    249    1    94
1956    1956000000    250    1    94
1957    1957000000    252    2    94
1958    1958000000    254    2    94
1959    1959000000    256    2    94
1960    1960000000    257    1    94
1961    1961000000    259    2    94
1962    1962000000    259    0    94
1963    1963000000    259    0    94
1964    1964000000    260    1    94
1965    1965000000    262    2    94
1966    1966000000    263    1    94
1967    1967000000    264    1    94
1968    1968000000    265    1    94
1969    1969000000    265    0    94
1970    1970000000    266    1    94
1971    1971000000    266    0    94
1972    1972000000    266    0    94
1973    1973000000    266    0    94
1974    1974000000    267    1    95
1975    1975000000    268    1    95
1976    1976000000    268    0    95
1977    1977000000    269    1    95
1978    1978000000    270    1    95
1979    1979000000    271    1    95
1980    1980000000    271    0    95
1981    1981000000    272    1    95
1982    1982000000    272    0    95
1983    1983000000    276    4    95
1984    1984000000    277    1    95
1985    1985000000    278    1    95
1986    1986000000    278    0    95
1987    1987000000    281    3    95
1988    1988000000    282    1    95
1989    1989000000    284    2    95
1990    1990000000    284    0    95
1991    1991000000    285    1    95
1992    1992000000    286    1    95
1993    1993000000    287    1    95
1994    1994000000    289    2    95
1995    1995000000    289    0    96
1996    1996000000    291    2    96
1997    1997000000    291    0    96
1998    1998000000    292    1    96
1999    1999000000    294    2    96
2000    2000000000    296    2    96
2001    2001000000    297    1    96
2002    2002000000    298    1    96
2003    2003000000    299    1    96
2004    2004000000    300    1    96
2005    2005000000    301    1    96
2006    2006000000    303    2    96
2007    2007000000    303    0    96
2008    2008000000    305    2    96
2009    2009000000    305    0    96
2010    2010000000    305    0    96
2011    2011000000    306    1    96
2012    2012000000    306    0    96
2013    2013000000    306    0    96
2014    2014000000    307    1    96
2015    2015000000    310    3    96
2016    2016000000    310    0    97
2017    2017000000    311    1    97
2018    2018000000    313    2    97
2019    2019000000    313    0    97
2020    2020000000    313    0    97
2021    2021000000    314    1    97
2022    2022000000    315    1    97
2023    2023000000    317    2    97
2024    2024000000    317    0    97
2025    2025000000    319    2    97
2026    2026000000    319    0    97
2027    2027000000    319    0    97
2028    2028000000    319    0    97
2029    2029000000    321    2    97
2030    2030000000    321    0    97
2031    2031000000    322    1    97
2032    2032000000    322    0    97
2033    2033000000    322    0    97
2034    2034000000    323    1    97
2035    2035000000    323    0    97
2036    2036000000    324    1    97
2037    2037000000    326    2    98
2038    2038000000    330    4    98
2039    2039000000    330    0    98
2040    2040000000    331    1    98
2041    2041000000    332    1    98
2042    2042000000    332    0    98
2043    2043000000    332    0    98
2044    2044000000    332    0    98
2045    2045000000    332    0    98
2046    2046000000    333    1    98
2047    2047000000    333    0    98
2048    2048000000    335    2    98
2049    2049000000    336    1    98
2050    2050000000    336    0    98
2051    2051000000    337    1    98
2052    2052000000    340    3    98
2053    2053000000    343    3    98
2054    2054000000    345    2    98
2055    2055000000    347    2    98
2056    2056000000    349    2    98
2057    2057000000    349    0    98
2058    2058000000    349    0    99
2059    2059000000    351    2    99
2060    2060000000    354    3    99
2061    2061000000    356    2    99
2062    2062000000    357    1    99
2063    2063000000    358    1    99
2064    2064000000    358    0    99
2065    2065000000    360    2    99
2066    2066000000    362    2    99
2067    2067000000    362    0    99
2068    2068000000    362    0    99
2069    2069000000    364    2    99
2070    2070000000    364    0    99
2071    2071000000    364    0    99
2072    2072000000    364    0    99
2073    2073000000    365    1    99
2074    2074000000    366    1    99
2075    2075000000    367    1    99
2076    2076000000    369    2    99
2077    2077000000    370    1    99
2078    2078000000    372    2    99
2079    2079000000    373    1    100
2080    2080000000    373    0    100
2081    2081000000    373    0    100
2082    2082000000    376    3    100
2083    2083000000    376    0    100
2084    2084000000    378    2    100
2085    2085000000    378    0    100
2086    2086000000    378    0    100
2087    2087000000    379    1    100
2088    2088000000    379    0    100
2089    2089000000    379    0    100
2090    2090000000    379    0    100
2091    2091000000    379    0    100
2092    2092000000    379    0    100
2093    2093000000    379    0    100
2094    2094000000    380    1    100
2095    2095000000    380    0    100
2096    2096000000    380    0    100
2097    2097000000    382    2    100
2098    2098000000    384    2    100
2099    2099000000    385    1    100
2100    2100000000    385    0    101
2101    2101000000    388    3    101
2102    2102000000    388    0    101
2103    2103000000    388    0    101
2104    2104000000    388    0    101
2105    2105000000    388    0    101
2106    2106000000    389    1    101
2107    2107000000    390    1    101
2108    2108000000    391    1    101
2109    2109000000    392    1    101
2110    2110000000    392    0    101
2111    2111000000    393    1    101
2112    2112000000    394    1    101
2113    2113000000    395    1    101
2114    2114000000    396    1    101
2115    2115000000    397    1    101
2116    2116000000    398    1    101
2117    2117000000    400    2    101
2118    2118000000    401    1    101
2119    2119000000    402    1    101
2120    2120000000    403    1    101
2121    2121000000    405    2    102
2122    2122000000    406    1    102
2123    2123000000    408    2    102
2124    2124000000    409    1    102
2125    2125000000    410    1    102
2126    2126000000    410    0    102
2127    2127000000    410    0    102
2128    2128000000    410    0    102
2129    2129000000    412    2    102
2130    2130000000    413    1    102
2131    2131000000    413    0    102
2132    2132000000    414    1    102
2133    2133000000    414    0    102
2134    2134000000    414    0    102
2135    2135000000    414    0    102
2136    2136000000    414    0    102
2137    2137000000    415    1    102
2138    2138000000    415    0    102
2139    2139000000    416    1    102
2140    2140000000    417    1    102
2141    2141000000    417    0    102
2142    2142000000    418    1    103
这是把238个区间分成的14个大区间段的第六个区间段的最终数据。
#118
独木星空2021-11-10 07:46
总区段    统计
86    36
87    41
88    32
89    30
90    32
91    23
92    24
93    24
94    24
95    23
96    21
97    14
98    25
99    23
100    13
101    18
102    14
103    1
步骤经过四步完成(提前制作出偶数周期表)
#119
独木星空2021-11-10 09:23
SELECT 1
USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\二生d30.DBF ALIAS 二生素数表
SELECT 3
USE f:\等差四生素数\三生d30.DBF ALIAS 三生素数表
kssj=SECONDS()
 For i=1 to 9141474
      @ 5,12 say i
     SELECT 2
     jl2=记录2
    SELECT  1
    GO jl2   
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 9
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=30
         SELECT 3
         APPEND BLANK     &&增加一条空记录
         REPLACE 三素 WITH A+30      
         REPLACE 记录3 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 2
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是在二生的基础上制作三生素数d30
#120
独木星空2021-11-10 09:45
SELECT 1
USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\三生d30.DBF ALIAS 三生素数表
SELECT 3
USE f:\等差四生素数\四生d30.DBF ALIAS 四生素数表
kssj=SECONDS()
 For i=1 to 1520125
      @ 5,12 say i
     SELECT 2
     jl3=记录3
    SELECT  1
    GO jl3   
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 9
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=30
         SELECT 3
         APPEND BLANK     &&增加一条空记录
         REPLACE 四素 WITH A+30      
         REPLACE 记录4 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 2
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#121
独木星空2021-11-10 15:58
SELECT 1
USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\二生d210.DBF ALIAS 二生素数表
kssj=SECONDS()
 For i=1 to 50876200
      @ 5,12 say i
    SELECT  1     
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 48
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=210
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二素 WITH A+210     
         REPLACE 记录2 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 1
   GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#122
独木星空2021-11-10 15:58
SELECT 1
USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\二生d210.DBF ALIAS 二生素数表
SELECT 3
USE f:\等差四生素数\三生d210.DBF ALIAS 三生素数表
kssj=SECONDS()
 For i=1 to 10964187
      @ 5,12 say i
     SELECT 2
     jl2=记录2
    SELECT  1
    GO jl2   
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 48
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=210
         SELECT 3
         APPEND BLANK     &&增加一条空记录
         REPLACE 三素 WITH A+210      
         REPLACE 记录3 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 2
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#123
独木星空2021-11-10 15:59
SELECT 1
USE f:\等差四生素数\素数表.DBF ALIAS 素数表
SELECT 2
USE f:\等差四生素数\三生d210.DBF ALIAS 三生素数表
SELECT 3
USE f:\等差四生素数\四生d210.DBF ALIAS 四生素数表
kssj=SECONDS()
 For i=1 to 2277441
      @ 5,12 say i
     SELECT 2
     jl3=记录3
    SELECT  1
    GO jl3   
    jl=recno() &&记录指针位置
    PUBLIC A
    A=素数
    skip
    FOR j=1 TO 48
       n=j
    SELECT 1
    PUBLIC B
    B=素数
    cj=B-A
    IF cj=210
         SELECT 3
         APPEND BLANK     &&增加一条空记录
         REPLACE 四素 WITH A+210      
         REPLACE 记录4 WITH jl+n
         exit
    ENDIF
      SELECT 1
      skip
   ENDFOR
   SELECT 2
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#124
独木星空2021-11-10 19:57
总区段    统计
103    18
104    0
105    0
106    0
107    0
108    0
109    0
110    0
111    0
112    0
113    0
114    0
115    0
116    0
117    0
118    0
119    0
120    0
第七大段最终结果(无解分布情况)
#125
独木星空2021-11-12 20:44
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 136
USE G:\三角递增法\偶数周期表136.DBF ALIAS 偶周期136
SELECT 137
USE G:\三角递增法\偶数周期表137.DBF ALIAS 偶周期137
SELECT 138
USE G:\三角递增法\偶数周期表138.DBF ALIAS 偶周期138
SELECT 139
USE G:\三角递增法\偶数周期表139.DBF ALIAS 偶周期139
SELECT 140
USE G:\三角递增法\偶数周期表140.DBF ALIAS 偶周期140
SELECT 141
USE G:\三角递增法\偶数周期表141.DBF ALIAS 偶周期141
SELECT 142
USE G:\三角递增法\偶数周期表142.DBF ALIAS 偶周期142
SELECT 143
USE G:\三角递增法\偶数周期表143.DBF ALIAS 偶周期143
SELECT 144
USE G:\三角递增法\偶数周期表144.DBF ALIAS 偶周期144
SELECT 145
USE G:\三角递增法\偶数周期表145.DBF ALIAS 偶周期145
SELECT 146
USE G:\三角递增法\偶数周期表146.DBF ALIAS 偶周期146
SELECT 147
USE G:\三角递增法\偶数周期表147.DBF ALIAS 偶周期147
SELECT 148
USE G:\三角递增法\偶数周期表148.DBF ALIAS 偶周期148
SELECT 149
USE G:\三角递增法\偶数周期表149.DBF ALIAS 偶周期149
SELECT 150
USE G:\三角递增法\偶数周期表150.DBF ALIAS 偶周期150
SELECT 151
USE G:\三角递增法\偶数周期表151.DBF ALIAS 偶周期151
SELECT 152
USE G:\三角递增法\偶数周期表152.DBF ALIAS 偶周期152
SELECT 153
USE G:\三角递增法\偶数周期表153.DBF ALIAS 偶周期153
kssj=SECONDS()
bwjm="偶周期"
For j=136 to 153
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

&& SELECT 1  && 未使用的工作区
 && USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      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,"运行时间提示")
每次处理一个大区间段,都需要用手工改,工作区,表名及别名,不知道用变量可以吗?
#126
wcx_cc2021-11-15 03:27
楼主的精神真值得学习.虽然我们都生存在这个3维空间中,但是努力突破时空,冲向无限的宇宙中.精神可嘉!!
#127
laowan0012021-11-16 08:19
回复 125楼 独木星空
你那四步的程序我看了,各个程序结构和逻辑并无明显关联,没法实现你所说的“连接成一个程序”
#128
独木星空2021-11-16 16:49
回复 127楼 laowan001
不能连成一个程序也无妨,只是我想把第一步的程序,改成变量赋值那种,整个问题有238表,分成了14块,每块处理17个表,因为前后两个表相互关联,所以,必须重叠一个表,即需要首尾相衔接,所以,实际上是处理18个表。每次处理前,都是手工把工作区,编上号码,表名称,及别名。我想实现,第一次把工作区,表名,别名设计好后,第二次外循环时,工作区,表名,别名同时改成第二次的。如第一次处理1至18的偶数周期表,第二次处理18到35的表,第三次处理35到51的表,依次类推,主要想知道有什么语句可以根据外循环值,把工作区号,表名,别名给改写了,不在每一个外循环都手工去改。
#129
独木星空2021-11-16 17:11
回复 127楼 laowan001
125楼是第九次外循环。当进入第十次外循环时,如何不用手工,直接进入下一次的处理,就是工作区号,表名,别名,变成153至170。当然这种处理时,需要每次外循环后,输出一个无偶数总表出来存上,以便以后做后期处理(第二步,第三步,第四步的处理),也就是说,如何先把第一步,一次性处理完。
#130
laowan0012021-11-16 20:54
程序代码:
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 136
USE G:\三角递增法\偶数周期表136.DBF ALIAS 偶周期136
SELECT 137
USE G:\三角递增法\偶数周期表137.DBF ALIAS 偶周期137
SELECT 138
USE G:\三角递增法\偶数周期表138.DBF ALIAS 偶周期138
SELECT 139
USE G:\三角递增法\偶数周期表139.DBF ALIAS 偶周期139
SELECT 140
USE G:\三角递增法\偶数周期表140.DBF ALIAS 偶周期140
SELECT 141
USE G:\三角递增法\偶数周期表141.DBF ALIAS 偶周期141
SELECT 142
USE G:\三角递增法\偶数周期表142.DBF ALIAS 偶周期142

上面是你的程序,可以写成下面这样
程序代码:
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表 in 0
USE G:\三角递增法\偶数周期表136.DBF ALIAS 偶周期136 in 0
USE G:\三角递增法\偶数周期表137.DBF ALIAS 偶周期137 in 0
USE G:\三角递增法\偶数周期表138.DBF ALIAS 偶周期138 in 0
USE G:\三角递增法\偶数周期表139.DBF ALIAS 偶周期139 in 0
USE G:\三角递增法\偶数周期表140.DBF ALIAS 偶周期140 in 0
USE G:\三角递增法\偶数周期表141.DBF ALIAS 偶周期141 in 0
USE G:\三角递增法\偶数周期表142.DBF ALIAS 偶周期142 in 0

use Tname in 0    && 系统会在一个空闲的工作区打开表

USE G:\三角递增法\偶数周期表138.DBF ALIAS 偶周期138 in 0
可以写成
USE G:\三角递增法\偶数周期表138.DBF in 0    && 表的alias是   偶数周期表138.DBF
在使用到这个表时可以这样
select 偶数周期表138    && 一个表为什么要有个表名还要有个别名呢?
所以,开始那段程序也可以写成下面这样
程序代码:
USE G:\三角递增法\无偶数表总表.DBF in 0
USE G:\三角递增法\偶数周期表136.DBF in 0
USE G:\三角递增法\偶数周期表137.DBF in 0
USE G:\三角递增法\偶数周期表138.DBF in 0
USE G:\三角递增法\偶数周期表139.DBF in 0
USE G:\三角递增法\偶数周期表140.DBF in 0
USE G:\三角递增法\偶数周期表141.DBF in 0
USE G:\三角递增法\偶数周期表142.DBF in 0




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

#131
laowan0012021-11-16 21:01
回复 128楼 独木星空
程序代码:
SELECT 1
USE G:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE G:\三角递增法\各段四生素数个数安整周期.DBF ALIAS 四生个数表细分周期
SELECT 3
USE G:\三角递增法\偶数表新密.DBF ALIAS 偶数表新密
kssj=SECONDS()
bwjm="偶数周期表"

 For i=2 to 100
      @ 5,12 say i
      wd=bwjm+ALLTRIM(STR(i-1))
      USE IN 3
      USE G:\三角递增法\偶数表新密.DBF ALIAS 偶数表新密
       SELECT 3
     
       DELETE ALL
       PACK
       FOR j=1 TO INT(i/2)
        @ 15,22 say j
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
...

这是你说的第一步,你想把哪里改成变量赋值?
#132
laowan0012021-11-16 21:23
我觉得你说的应该是第二步
#133
laowan0012021-11-16 21:25
程序代码:
      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
     

改成
程序代码:
    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
     

效率会高些
#134
laowan0012021-11-16 21:28
回复 128楼 独木星空
“整个问题有238表,分成了14块,每块处理17个表”。
238个表,为什么要分成14块?是方法的要求,还是因为打开表太多?分成20块是不是也可以

[此贴子已经被作者于2021-11-16 21:31编辑过]

#135
独木星空2021-11-16 22:06
回复 132楼 laowan001
你理解的不错,在整个问题上是第二步。
第一步是制作偶数周期表(即参与运算的元素,两两相加的和值,相同的偶数只保留一个)。
当把偶数制作完成后,开始处理这238个偶数周期表,17个一组(实际上,除了第一次外循环外,都是18个一组,因为第二次外循环时,要把上一次的最后一个表连上,即从上一次外循环的最后一个表开始,加上本次的,共计18个偶数周期表),这步的处理是,比对周期表中与那五类值没有的数值,即找出来,例如偶数表2中有30,120,210,300,380;但是没有180这个值,在210周期内,应该能合成30,(60),90,120,(150),180,210;这五个值,小括号内的不能被合成,不在考虑之内。在5个可以被合成数中,90无解,180无解,这些值会存放到:无偶数表总表,中。当把本次的2至17个偶数表,排查完,就完成了本次整体循环。
    如果,我想运行下一个外循环值(即第二组,偶数周期表17,到偶数周期表34),这时我需要把第一的表,手工改成它们(原来的第一次是偶数周期表2至 偶数周期表17),现在变成偶数周期表17,至偶数周期表34;接下来执行第三组,偶数周期表34,至偶数周期表51;.....,在这个上一组数据,到下一组数据中,我是手工改写的工作区,表名,及别名。
     先生既然有了语句直接打开一个空闲工作区,那就不用考虑工作区号问题了;表别名也省略了,那么表别名也不用考虑了,只考虑如何把表名称改写成下一组表名即可。
      因为第一次外循环,与后边的外循环不配套,所以可以从第二组(第二个外循环开始),第二组处理数据为表17到表34;第三组处理数据为:表34到表51;第四组处理数据为表51到表68;....,以此类推,第14组处理数据为:表221到表238.可以看出,每次实际上是处理18个表(总有一个表与上次交叉)。
     我是手工改写14次,完成这项工作的,现在想两次完成这项工作,第一次处理第一组数据,表2到表17;第二步完成第二组数据到第14组数据(每组处理18个偶数周期表),问第二步如何用变量赋值,把表名改成当次处理的表名。
#136
独木星空2021-11-16 22:13
回复 134楼 laowan001
不是方法的要求。目的是缩小表的容量,表太大,有时会超过vfp的极限。也可以说,是人为的,根据数据量的大小而定,分步处理,为好多类似问题考虑,有的情况下,可能一次就能处理完毕,也不需要分组(划段)处理;但是有的情况下,分成14块也不行,可能划分成100组,都是根据具体情况而定。
#137
独木星空2021-11-16 22:25
回复 134楼 laowan001
与打开的表多少无关,只是与数据量的大小有关(vfp可以最多有32767个工作区,而实际上最多同时打开255个工作区,是这样吗?无论是与不是,我的算法要求分成若干组(块)进行处理,而不是一次性处理,无论从数据量上,vfp的上限上,最重要的是想处理类似问题,每种类似问题,大多情况下数据量较大,不宜一次处理)。
    至于划分14个板块,还是20个,或者其他的板块数,除了数据量的考虑外,还要考虑它是不是表总数(238个表)的约数,14*17=238,如果用20,就不能分成标准的14个外循环值(一个外循环值,处理一个组,一段连续的表)。
#138
独木星空2021-11-16 22:29
回复 132楼 laowan001
在这种处理中,还要考虑一个问题,外循坏一次,要存一次无偶数总表,所以每次需要给它一个表名,不要提前建表,每次外循环后,创建一个表盛放数据即可。
     把这第二步处理完,剩下的活,就简单了。
#139
laowan0012021-11-17 08:04
程序代码:
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 187
USE G:\三角递增法\偶数周期表187.DBF ALIAS 偶周期187
SELECT 188
USE G:\三角递增法\偶数周期表188.DBF ALIAS 偶周期188
SELECT 189
USE G:\三角递增法\偶数周期表189.DBF ALIAS 偶周期189
SELECT 190
USE G:\三角递增法\偶数周期表190.DBF ALIAS 偶周期190
SELECT 191
USE G:\三角递增法\偶数周期表191.DBF ALIAS 偶周期191
SELECT 192
USE G:\三角递增法\偶数周期表192.DBF ALIAS 偶周期192
SELECT 193
USE G:\三角递增法\偶数周期表193.DBF ALIAS 偶周期193
SELECT 194
USE G:\三角递增法\偶数周期表194.DBF ALIAS 偶周期194
SELECT 195
USE G:\三角递增法\偶数周期表195.DBF ALIAS 偶周期195
SELECT 196
USE G:\三角递增法\偶数周期表196.DBF ALIAS 偶周期196
SELECT 197
USE G:\三角递增法\偶数周期表197.DBF ALIAS 偶周期197
SELECT 198
USE G:\三角递增法\偶数周期表198.DBF ALIAS 偶周期198
SELECT 199
USE G:\三角递增法\偶数周期表199.DBF ALIAS 偶周期199
SELECT 200
USE G:\三角递增法\偶数周期表200.DBF ALIAS 偶周期200
SELECT 201
USE G:\三角递增法\偶数周期表201.DBF ALIAS 偶周期201
SELECT 202
USE G:\三角递增法\偶数周期表202.DBF ALIAS 偶周期202
SELECT 203
USE G:\三角递增法\偶数周期表203.DBF ALIAS 偶周期203
SELECT 204
USE G:\三角递增法\偶数周期表204.DBF ALIAS 偶周期204
kssj=SECONDS()
bwjm="偶周期"
For j=187 to 204
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

&& SELECT 1  && 未使用的工作区

 && USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      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,"运行时间提示")


在for j=187 to 204循环体中,只用到了一个表  SELECT "偶周期"+ALLTRIM(STR(k)) ,是这样吧?
另:在循环体中,j的值未变化过,k=j,k值也没变化过,那就没必要k=j了,直接用j就可以
#140
独木星空2021-11-17 08:37
回复 139楼 laowan001
直接用j也行。你这楼引用的是第12次外循环,在手工改两次就全部完成了。这只是14个外循环,每次改动18个表名,但是如果在多,这样手工改写表名就不现实了。在第一步时,反复改写程序才使产生的偶数周期表名与外循环值相关联。
#141
laowan0012021-11-17 08:40
回复 140楼 独木星空
我是想问你在循环体里是不是一次就用到了17个表中的一个
#142
laowan0012021-11-17 08:45
在这种处理中,还要考虑一个问题,外循坏一次,要存一次无偶数总表,所以每次需要给它一个表名,不要提前建表,每次外循环后,创建一个表盛放数据即可。

存一次无偶数总表,是不是239区的那个表?没见到“创建一个表”啊
#143
独木星空2021-11-17 09:15
回复 141楼 laowan001
对!在内循环体中一次用到一个表,内循环是18次(因为需要上一个外循环的最后一个表也参与其中)。外循环一次,调动内循环18个表(增量是17个表),从第二个外循环值设计就好,不需要考虑第一个外循环,因为那个需要单独处理。
#144
独木星空2021-11-17 09:26
回复 142楼 laowan001
是239那个表。因为外循环一次,就结束了,要想运行下一个外循环,就得手工改写18个表名。对于无偶数总表来说,打开,导出到一个新表即可,表名:无偶数总表12(假如是第12次外循环),然后清空表即可,可以反复利用。
#145
独木星空2021-11-17 11:00
回复 142楼 laowan001
外循环一次完成后,也可以把表239(无偶数总表)抄写在无偶数总表i中(i为外循环次数),进入下一个外循环前删除记录即可(变成空表,无记录)。
#146
laowan0012021-11-17 15:04
For j=187 to 204        && 这是外循环吧???
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))

      For i=(j-1)*500000+1 to (j+1)*500000    && 这是内循环吧???

        && 这个循环中只用到了      SELECT "偶周期"+ALLTRIM(STR(k))  而k值没变化,所以只用到了一个表
 
没见到你说的上一个表参与其中啊
#147
laowan0012021-11-17 15:07
         IF A=wou
         SELECT "偶周期"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 239
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF

哪个是创建表的语句???
#148
laowan0012021-11-17 15:10
你说的“外循环”是不是想象中的循环,而不是之前程序里的循环?
#149
独木星空2021-11-17 19:32
回复 146楼 laowan001
这是内循环(第12次外循环)。
#150
独木星空2021-11-17 19:35
回复 147楼 laowan001
没有创建表的语句。那个语句是处理内循环的数据用的,即搜寻无偶数的。
#151
独木星空2021-11-17 19:43
回复 148楼 laowan001
对!就是我想象中的外循环。把第二程序加一套外循环,循环值从2到14即可,每个外循环处理18个表,处理完成后,把最终结果存表,表名称与外循环值相关联。例如外循环值=2时,处理偶数周期表17到表34,外循环值=3时,处理偶数周期表34到表51,....,当外循环值=14,处理偶数周期表231到表238。
123456