数学中国

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

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

  [复制链接]
 楼主| 发表于 2022-2-7 21:29 | 显示全部楼层
SELECT 1
USE g:\一加m问题\素数表10亿.DBF ALIAS 素数表
SELECT 2
USE g:\一加m问题\二生素数d56.DBF ALIAS 二素表
kssj=SECONDS()
For i=1 to 9592
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    COUNT NEXT 28 FOR 素数-A=56 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二素56 WITH A+28  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-7 21:30 | 显示全部楼层
SELECT 1
USE g:\一加m问题\素数表10亿.DBF ALIAS 素数表
SELECT 2
USE g:\一加m问题\二生素数d58.DBF ALIAS 二素表
kssj=SECONDS()
For i=1 to 9592
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    COUNT NEXT 29 FOR 素数-A=58 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二素58 WITH A+29  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-7 21:31 | 显示全部楼层
SELECT 1
USE g:\一加m问题\素数表10亿.DBF ALIAS 素数表
SELECT 2
USE g:\一加m问题\二生素数d60.DBF ALIAS 二素表
kssj=SECONDS()
For i=1 to 9592
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    COUNT NEXT 30 FOR 素数-A=60 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二素60 WITH A+30  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用时0分1.98秒
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-7 21:33 | 显示全部楼层
截止2022年2月7日周一21:35分农历正月初七,热度66,回复1299,浏览量45893.
回复 支持 反对

使用道具 举报

发表于 2022-2-9 08:22 | 显示全部楼层
抱歉,我已经很长时间没有查看邮箱了,恰好今天有事,到邮箱看了一下,才发现你的邮件。那请你把程序发给我吧,看看能否力所能及地提供点建议。

点评

那个问题已经解决了,我找一找,找到后把问题,及解决后的程序在这里贴出,在vfp编程论坛或许也有。这没有什么,我也不经常上邮箱里去浏览,错过也是无奈之举。这里还是向那宝吉先生说一声:谢谢! 虎年愉快工作顺   发表于 2022-2-9 08:36
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-9 08:40 | 显示全部楼层
截止2022年2月9日周三8:41分农历正月初九,热度67,回复1302,浏览量45938.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-9 10:13 | 显示全部楼层
最近我在编写一个四生素数中项和覆盖问题的程序,基本框架已有,只是最后两步的,去重,留下唯一;以及第二层循环结束后,保存工作,两步无法完成。

       如果先生有空的话,可以在数学中国论坛,进行讨论,以便帮助我,把最后两步完成,使程序完备化,能得到应用。

       静待先生的回音。

       网友:白新岭
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-9 10:25 | 显示全部楼层
vfbpgyfk 发表于 2022-2-9 08:22
抱歉,我已经很长时间没有查看邮箱了,恰好今天有事,到邮箱看了一下,才发现你的邮件。那请你把程序发给我 ...

Select A.* Into Table d:\三角递增法\偶数表升序1 From 偶数表 A Inner Join (Select 偶数 From 偶数表 Group By 偶数 Having Count(*)=1) B On A.偶数=B.偶数
这个语句可以把,制作出来的偶数表,重新整理,去重了,不知道是否排列序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-9 10:48 | 显示全部楼层
假设把四生素数表,分成100份,则100*100=10000份,其中100份为平方项,剩余9900份为交叉项,而交叉项前系数皆为2,所以9900/2=4950项,即,i从1到99,j从i+1到100,有99项,有98项,依此类推,所以共有1+2+3+....+99=(1+99)*99/2=4950项。
把数据散分,或许也是一种不错的思路。       
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-9 10:48 | 显示全部楼层
CLOSE DATA
USE d:\三角递增法\偶数双表.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中各重复记录的 重复数
默认情况下,新建的数据统计表是储存在vfp的根目录中的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 00:52 , Processed in 0.103342 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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