数学中国

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

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

  [复制链接]
发表于 2021-10-27 23:19 | 显示全部楼层
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [,...]
选择所有不同的 top nexpr% select list _ item
选择所有不同的 top nexpr% select _ list _ item
FROM [FORCE] Table_List_Item [,…] [WITH (BUFFERING =IExpr)]
从强制表列表项目与缓冲 iexpr
从强制表列表项目与缓冲 iexpr
[[JoinType] JOIN DatabaseName!]Table [[AS] Local_Alias]
连接类型连接数据库名称表作为本地别名
[ON.JoinCondition [AND | OR JoinCondition | FilterCondition] ..]
合并条件[和 | 或合并条件 | 过滤条件
WHERE JoinCondition | FilterCondition [AND | OR JoinCondition |
哪里合并条件 | 过滤条件[和 | 或合并条件
FilterCondition] ...]
过滤条件
[GROUP BY Column_List_Item [,. ..]]
按列列表项分组
[HAVING FilterCondition [AND | OR ..]]
具有过滤条件 [和 |或...]]
[UNION [ALL] SELECTCommand]
联合[所有]选择命令
[ORDER BY Order_item [AsC | DEsC] [,...]]
按订单项目[ asc | desc ]订购
[StorageDestination | DisplayDestination]
存储目标显示目的地
[PREFERENCE PreferenceName] [NOcoNsOLE] [PLAIN][NOWAIT]
首选项名称没有控制台普通没有等待
JoinType -INNER | LEFT| RIGHT | FULL [OUTER]
连体式内左右全外
StorageDestination -INTO [ARRAY ArrayNName | CURsOR CursorName
存储目的地-进入[阵列阵列名 | 光标目录名
[NOFILTER | READWRITE] | TABLE TableName]
没有过滤器读/写表名
DisplayDestination -TO [FILE FileName [ADDITIVE] | PRINTER
文件名加法打印机
[PROMPT] | SCREEN]
[提示] | 屏幕]
select n的在线翻译
回复 支持 反对

使用道具 举报

发表于 2021-10-28 10:17 | 显示全部楼层
SELECT 1
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
bwjm="偶数周期表"
For j=1 to 10
      @ 5,12 say j
      n=j+1
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

SELECT 0  && 未使用的工作区
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 n
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT n
         skip
         LOOP
         ELSE
         SELECT 1
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
         
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
只运行一次,进入第二次外循环,提示别名已被占用
回复 支持 反对

使用道具 举报

发表于 2021-10-28 14:52 | 显示全部楼层
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 1
USE G:\三角递增法\偶数周期表1.DBF ALIAS 偶周期1
SELECT 2
USE G:\三角递增法\偶数周期表2.DBF ALIAS 偶周期2
SELECT 3
USE G:\三角递增法\偶数周期表3.DBF ALIAS 偶周期3
SELECT 4
USE G:\三角递增法\偶数周期表4.DBF ALIAS 偶周期4
SELECT 5
USE G:\三角递增法\偶数周期表5.DBF ALIAS 偶周期5
SELECT 6
USE G:\三角递增法\偶数周期表6.DBF ALIAS 偶周期6
SELECT 7
USE G:\三角递增法\偶数周期表7.DBF ALIAS 偶周期7
SELECT 8
USE G:\三角递增法\偶数周期表8.DBF ALIAS 偶周期8
SELECT 9
USE G:\三角递增法\偶数周期表9.DBF ALIAS 偶周期9
SELECT 10
USE G:\三角递增法\偶数周期表10.DBF ALIAS 偶周期10
SELECT 11
USE G:\三角递增法\偶数周期表11.DBF ALIAS 偶周期11
SELECT 12
USE G:\三角递增法\偶数周期表12.DBF ALIAS 偶周期12
SELECT 13
USE G:\三角递增法\偶数周期表13.DBF ALIAS 偶周期13
SELECT 14
USE G:\三角递增法\偶数周期表14.DBF ALIAS 偶周期14
SELECT 15
USE G:\三角递增法\偶数周期表15.DBF ALIAS 偶周期15
SELECT 16
USE G:\三角递增法\偶数周期表16.DBF ALIAS 偶周期16
SELECT 17
USE G:\三角递增法\偶数周期表17.DBF ALIAS 偶周期17
kssj=SECONDS()
bwjm="偶周期"
For j=1 to 17
      @ 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,"运行时间提示")
运算到:偶数整周期表11时出错,因为此表的数据是n*m的形式,非一个正整数值。
回复 支持 反对

使用道具 举报

发表于 2021-10-28 15:54 | 显示全部楼层
白新岭 发表于 2010-9-13 10:55
[这个贴子最后由白新岭在 2010/09/13 11:00am 第 1 次编辑]

以下是182楼修改后的程序,用来求对称8生素数 ...

从2010年9月13日到2016年8月7日19:31分 207#,间隔时间差不多6年。对于vfp也是近两三年用的时间最多。
回复 支持 反对

使用道具 举报

发表于 2021-10-28 19:46 | 显示全部楼层
LECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 18
USE G:\三角递增法\偶数周期表1.DBF ALIAS 偶周期18
SELECT 19
USE G:\三角递增法\偶数周期表2.DBF ALIAS 偶周期19
SELECT 20
USE G:\三角递增法\偶数周期表3.DBF ALIAS 偶周期20
SELECT 21
USE G:\三角递增法\偶数周期表4.DBF ALIAS 偶周期21
SELECT 22
USE G:\三角递增法\偶数周期表5.DBF ALIAS 偶周期22
SELECT 23
USE G:\三角递增法\偶数周期表6.DBF ALIAS 偶周期23
SELECT 24
USE G:\三角递增法\偶数周期表7.DBF ALIAS 偶周期24
SELECT 25
USE G:\三角递增法\偶数周期表8.DBF ALIAS 偶周期25
SELECT 26
USE G:\三角递增法\偶数周期表9.DBF ALIAS 偶周期26
SELECT 27
USE G:\三角递增法\偶数周期表10.DBF ALIAS 偶周期27
SELECT 28
USE G:\三角递增法\偶数周期表11.DBF ALIAS 偶周期28
SELECT 29
USE G:\三角递增法\偶数周期表12.DBF ALIAS 偶周期29
SELECT 30
USE G:\三角递增法\偶数周期表13.DBF ALIAS 偶周期30
SELECT 31
USE G:\三角递增法\偶数周期表14.DBF ALIAS 偶周期31
SELECT 32
USE G:\三角递增法\偶数周期表15.DBF ALIAS 偶周期32
SELECT 33
USE G:\三角递增法\偶数周期表16.DBF ALIAS 偶周期33
SELECT 34
USE G:\三角递增法\偶数周期表17.DBF ALIAS 偶周期34
kssj=SECONDS()
bwjm="偶周期"
For j=18 to 34
      @ 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,"运行时间提示")
缺陷,需要手工改写工作区。
回复 支持 反对

使用道具 举报

发表于 2021-10-28 19:46 | 显示全部楼层
本帖最后由 独木星空谁 于 2021-10-28 20:27 编辑

LECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 18
USE G:\三角递增法\偶数周期表1.DBF ALIAS 偶周期18
SELECT 19
USE G:\三角递增法\偶数周期表2.DBF ALIAS 偶周期19
SELECT 20
USE G:\三角递增法\偶数周期表3.DBF ALIAS 偶周期20
SELECT 21
USE G:\三角递增法\偶数周期表4.DBF ALIAS 偶周期21
SELECT 22
USE G:\三角递增法\偶数周期表5.DBF ALIAS 偶周期22
SELECT 23
USE G:\三角递增法\偶数周期表6.DBF ALIAS 偶周期23
SELECT 24
USE G:\三角递增法\偶数周期表7.DBF ALIAS 偶周期24
SELECT 25
USE G:\三角递增法\偶数周期表8.DBF ALIAS 偶周期25
SELECT 26
USE G:\三角递增法\偶数周期表9.DBF ALIAS 偶周期26
SELECT 27
USE G:\三角递增法\偶数周期表10.DBF ALIAS 偶周期27
SELECT 28
USE G:\三角递增法\偶数周期表11.DBF ALIAS 偶周期28
SELECT 29
USE G:\三角递增法\偶数周期表12.DBF ALIAS 偶周期29
SELECT 30
USE G:\三角递增法\偶数周期表13.DBF ALIAS 偶周期30
SELECT 31
USE G:\三角递增法\偶数周期表14.DBF ALIAS 偶周期31
SELECT 32
USE G:\三角递增法\偶数周期表15.DBF ALIAS 偶周期32
SELECT 33
USE G:\三角递增法\偶数周期表16.DBF ALIAS 偶周期33
SELECT 34
USE G:\三角递增法\偶数周期表17.DBF ALIAS 偶周期34
kssj=SECONDS()
bwjm="偶周期"
For j=18 to 34
      @ 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,"运行时间提示")
缺陷,需要手工改写工作区。
手工的弊端,改了工作区,改了别名,改了外循环值,就是没有改最要紧的表文件名。
回复 支持 反对

使用道具 举报

发表于 2021-10-28 21:18 | 显示全部楼层
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 18
USE G:\三角递增法\偶数周期表18.DBF ALIAS 偶周期18
SELECT 19
USE G:\三角递增法\偶数周期表19.DBF ALIAS 偶周期19
SELECT 20
USE G:\三角递增法\偶数周期表20.DBF ALIAS 偶周期20
SELECT 21
USE G:\三角递增法\偶数周期表21.DBF ALIAS 偶周期21
SELECT 22
USE G:\三角递增法\偶数周期表22.DBF ALIAS 偶周期22
SELECT 23
USE G:\三角递增法\偶数周期表23.DBF ALIAS 偶周期23
SELECT 24
USE G:\三角递增法\偶数周期表24.DBF ALIAS 偶周期24
SELECT 25
USE G:\三角递增法\偶数周期表25.DBF ALIAS 偶周期25
SELECT 26
USE G:\三角递增法\偶数周期表26.DBF ALIAS 偶周期26
SELECT 27
USE G:\三角递增法\偶数周期表27.DBF ALIAS 偶周期27
SELECT 28
USE G:\三角递增法\偶数周期表28.DBF ALIAS 偶周期28
SELECT 29
USE G:\三角递增法\偶数周期表29.DBF ALIAS 偶周期29
SELECT 30
USE G:\三角递增法\偶数周期表30.DBF ALIAS 偶周期30
SELECT 31
USE G:\三角递增法\偶数周期表31.DBF ALIAS 偶周期31
SELECT 32
USE G:\三角递增法\偶数周期表32.DBF ALIAS 偶周期32
SELECT 33
USE G:\三角递增法\偶数周期表33.DBF ALIAS 偶周期33
SELECT 34
USE G:\三角递增法\偶数周期表34.DBF ALIAS 偶周期34
kssj=SECONDS()
bwjm="偶周期"
For j=18 to 34
      @ 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,"运行时间提示")
第二次外循环设置
回复 支持 反对

使用道具 举报

发表于 2021-10-29 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 相同记录数 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
回复 支持 反对

使用道具 举报

发表于 2021-10-29 06:53 | 显示全部楼层
SELECT 1
USE G:\三角递增法\无偶相同记录数.DBF ALIAS 无偶相同录
SELECT 2
USE G:\三角递增法\无偶最终结果表.DBF ALIAS 无偶结果表
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 2385727
      @ 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,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-10-29 15:15 | 显示全部楼层
4807984050
在222-238(每区2100万)第一个反例,检验后确实是反例。而下一个4853911050,并非反例,它有四组无序解,有序是8组解;分别为:4633480125+220430925,4064982195+788928855;2610310515+2243600535;2554860225+2299050825;随后,出现的反例间隔都不大,估计不是反例,应该是程序出现疏漏的地方,待以后验证。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 12:44 , Processed in 0.081184 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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