数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: 白新岭

[原创]请教vfbpgyfk先生一个编程问题

  [复制链接]
发表于 2021-10-20 13:18 | 显示全部楼层
段落        统计        最小值
200        1        0
300        1        100
400        2        200
500        2        300
600        3        400
700        3        500
800        4        600
900        4        700
1000        5        800
1100        5        900
1200        6        1000
1300        6        1100
1400        7        1200
1500        7        1300
1600        8        1400
1700        8        1500
1800        9        1600
1900        9        1700
2000        10        1800
2100        10        1900
2200        11        2000
2300        11        2100
2400        12        2200
2500        12        2300
2600        13        2400
2700        13        2500
2800        14        2600
2900        14        2700
3000        15        2800
3100        15        2900
3200        16        3000
3300        16        3100
3400        17        3200
3500        17        3300
3600        18        3400
3700        18        3500
3800        19        3600
3900        19        3700
4000        20        3800
4100        20        3900
4200        21        4000
4300        21        4100
4400        22        4200
4500        22        4300
4600        23        4400
4700        23        4500
4800        24        4600
4900        24        4700               
5000        25        4800               
5100        25        4900               
总计算        650        20211020        分成100份        或许更好
回复 支持 反对

使用道具 举报

发表于 2021-10-21 06:45 | 显示全部楼层
SELECT 1
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE D:\三角递增法\各段四生素数个数.DBF ALIAS 四生个数表
SELECT 3
USE D:\三角递增法\偶数表.DBF ALIAS 偶数表
kssj=SECONDS()
For i=2 to 2
      @ 5,12 say i
      FOR j=1 TO INT(i/2)
      SELECT 3
      DELETE ALL
      PACK
        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=四中
               jl=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 @ 15,22 say k2
                 B=四中
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 SKIP
                 ENDFOR
               SELECT 1
               GO jl+1
             ENDFOR
             Select A.* Into Table d:\三角递增法\偶数表升序j From 偶数表 A Inner Join (Select 偶数 From 偶数表 Group By 偶数 Having Count(*)=1) B On A.偶数=B.偶数
       ENDFOR
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是今天编写的一种新算法,制作四生素数中项和的偶数表,不过不完善,还不能正式运用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-22 00:59 | 显示全部楼层
SELECT 1
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE D:\三角递增法\各段四生素数个数.DBF ALIAS 四生个数表
SELECT 3
USE D:\三角递增法\偶数表.DBF ALIAS 偶数表
kssj=SECONDS()
For i=2 to 2
      @ 5,12 say i
      FOR j=1 TO INT(i/2)
      SELECT 3
      DELETE ALL
      PACK
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        dimension  arr1[fgs1]
        SELECT 1
        GO zgs1-fgs1+1
        FOR l1=1 TO fgs1
        arr1[l1]=四中
        SELECT 1
        SKIP
        ENDFOR
        
        SELECT  2
        GO i-j
        zgs2=总个数
        fgs2=分个数
        dimension  arr2[fgs2]
        SELECT 1
        GO zgs2-fgs2+1
        FOR l2=1 TO fgs2
        arr2[l2]=四中
        SELECT 1
        SKIP
        ENDFOR
        
     
               FOR k1=1  TO  fgs1
                 For k2=1 to fgs2
                 C=arr1[k1]+arr2[k2]
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 ENDFOR
               ENDFOR
            Select A.* Into Table d:\三角递增法\偶数表升序j From 偶数表 A Inner Join (Select 偶数 From 偶数表 Group By 偶数 Having Count(*)=1) B On A.偶数=B.偶数
       ENDFOR
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-10-22 07:52 | 显示全部楼层
SELECT [ALLI DISTINCT TTOP nExpr PERCENT Select List Item L]
FROM IFORCE Table tist ItemL](WITH (BUFFERING -JExpr[oinType]JOIN DatabaseName!]Table [[AS] LocalAlias]
ION JoinCondition [ANDI OR [oinCondition i
FilterConditionl ... IWHERE JoinCondition|
FilterCondition [ANDIOR JoinCondition!
FilterCondition]..]
[GROUP BY Column_List Item [....]]
HAVING FilterCondition [ANDIOR ...JI UNION [ALLJ SELECTCommand]
IORDER BY Order Item [ASC| DESC] L...J]
[StorageDestinationDisplayDestination]
PREFERENCE PreferenceName] [NOCONSOLE IPLAINJ INOWAIT
JoinType-INNERILEFT!RIGHTIFULL [OUTER]
StorageDestination-INTO [ARRAY ArrayNameI
CURSOR CursorName[NOFILTERIREADWRITE]!TABLE TableName]
DisplayDestination-TO [FILE FileName [ADDITIVE]I PRINTER PROMPTIISCREEN]
SELECT nWorkAreacTableAlias
分界
[ all i distinct ttop nexpr percent select list item l ](with (buffering-jexpr [ ointype ] join databasename!)
合并条件,合并条件,合并条件,合并条件,合并条件![过滤条件]。.][按列列表项目[ ... ]]具有过滤条件[和... 联合[所有选择命令]按订单项目
[ asc | desc ] l。.[ storagedestationdisplaydestination ] preference preferencename ][ noconsole iplainj inowait jointype-inileft![ outer ]
storagedestination-into [ array arraynamei cursor cursorname [ nofilterireadwrite ] ![ table tablename ] displaydestination-to [ file filename [ additive ] i printer promptiiscreen ]
选择 nworkareactablealias
分界
[ALLI DISTINCT TTOP nExpr PERCENT Select List Item L]
FROM IFORCE Table tist ItemL](WITH (BUFFERING -JExpr[oinType]JOIN DatabaseName!]
所有我不同的 ttop nexpr 百分比选择列表项目 lfrom iforce 表存储项目与缓冲-jexpr ointype 连接数据库名称!
分界
[ asc | desc ] l。.[ storagedestationdisplaydestination ] preference preferencename ][ noconsole iplainj inowait jointype-inileft![ outer ]
storagedestination-into [ array arraynamei cursor cursorname [ nofilterireadwrite ] ![ table tablename ] displaydestination-to [ file filename [ additive ] i printer promptiiscreen ]
因此,选择目的地的偏好应该选择不同的控制台,不要选择等待连接类型!外部存储目的地-到数组数组名称光标修改名称 nofilterireadwrite 表格名称显示目的地-到文件名添加物 i printer promptiiscreen
回复 支持 反对

使用道具 举报

发表于 2021-10-22 08:10 | 显示全部楼层
vfbpgyfk 发表于 2010-5-10 15:48
白新岭:您好!
我看到您的贴子啦。待我分析和理解后,再与您沟通。

SELECT 1
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE D:\三角递增法\各段四生素数个数.DBF ALIAS 四生个数表
SELECT 3
USE D:\三角递增法\偶数表.DBF ALIAS 偶数表
kssj=SECONDS()
For i=2 to 2
      @ 5,12 say i
      FOR j=1 TO INT(i/2)
      SELECT 3
      DELETE ALL
      PACK
        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=四中
               jl=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 @ 15,22 say k2
                 B=四中
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 SKIP
                 ENDFOR
               SELECT 1
               GO jl+1
             ENDFOR
              Select A.* Into Table d:\三角递增法\偶数表升序j From 偶数表 A Inner Join (Select 偶数 From 偶数表 Group By 偶数 Having Count(*)=1) B On A.偶数=B.偶数
       ENDFOR
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是个大概框架,最后两步,需要进一步处理。
回复 支持 反对

使用道具 举报

发表于 2021-10-22 08:12 | 显示全部楼层
vfbpgyfk 发表于 2010-5-10 15:48
白新岭:您好!
我看到您的贴子啦。待我分析和理解后,再与您沟通。

SELECT 1
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE D:\三角递增法\各段四生素数个数.DBF ALIAS 四生个数表
SELECT 3
USE D:\三角递增法\偶数表.DBF ALIAS 偶数表
kssj=SECONDS()
For i=2 to 2
      @ 5,12 say i
      FOR j=1 TO INT(i/2)
      SELECT 3
      DELETE ALL
      PACK
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        dimension  arr1[fgs1]
        SELECT 1
        GO zgs1-fgs1+1
        FOR l1=1 TO fgs1
        arr1[l1]=四中
        SELECT 1
        SKIP
        ENDFOR
        
        SELECT  2
        GO i-j
        zgs2=总个数
        fgs2=分个数
        dimension  arr2[fgs2]
        SELECT 1
        GO zgs2-fgs2+1
        FOR l2=1 TO fgs2
        arr2[l2]=四中
        SELECT 1
        SKIP
        ENDFOR
        
     
               FOR k1=1  TO  fgs1
                 For k2=1 to fgs2
                 C=arr1[k1]+arr2[k2]
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 ENDFOR
               ENDFOR
            Select A.* Into Table d:\三角递增法\偶数表升序j From 偶数表 A Inner Join (Select 偶数 From 偶数表 Group By 偶数 Having Count(*)=1) B On A.偶数=B.偶数
       ENDFOR
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这与上边的基本一致,只是用数组代替了,速度也不是很快。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-22 21:59 | 显示全部楼层
select * from 偶数表实验.dbf distinct into table 偶数唯一表
这个简单语句,可以实现去重,留唯一的删除过程,只有一条的保留,一条以上的留下一个代表。
回复 支持 反对

使用道具 举报

发表于 2021-10-23 08:03 | 显示全部楼层
SELECT 1
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE D:\三角递增法\各段四生素数个数.DBF ALIAS 四生个数表
SELECT 3
USE D:\三角递增法\偶数表新.DBF ALIAS 偶数表新
SELECT 4
USE D:\三角递增法\文件起名.DBF ALIAS 文件起名
kssj=SECONDS()
dimension  arr[50]
For i=6 to 7
      @ 5,12 say i
      SELECT 4
      GO i-1
      arr[i-1]=文件名
       SELECT 3
       DELETE ALL
       PACK
       FOR j=1 TO INT(i/2)
        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=四中
               jl=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 @ 15,22 say k2
                 B=四中
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 SKIP
                 ENDFOR
               SELECT 1
               GO jl+1
             ENDFOR   
          ENDFOR
       SELECT 3
       GO 1
       select * from 偶数表新.dbf DISTINCT INTO table d:\三角递增法\"arr[i-1]".dbf
       CLOSE ALL Database
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
还存在一些错误
回复 支持 反对

使用道具 举报

发表于 2021-10-23 08:25 | 显示全部楼层
截止2021年10月23日周六8:24分浏览量38027,热度51°,回复量924.
回复 支持 反对

使用道具 举报

发表于 2021-10-23 12:03 | 显示全部楼层
select * from abc.dbf distinct into table new
从 abc.dbf 中选择 distinct 到 table new
distinct解释(翻译)独特的
adj.不一样的;不同的;明显的;清楚的;确切的;清晰的;明确的;清楚明白的;确定无疑的;
(两个实体)不同的,相异的;(植物部位)离生的,分离的;
这个语句,可以去重复,并且只有一条的也会留住,只是一定得建新表
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-5-19 13:20 , Processed in 0.084767 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表