| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10981 人关注过本帖
标题:优化程序或者从新编写求四生素数中项不能合成的偶数
只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\素数表文件\不能合成数头周.DBF ALIAS 不能合成数
SELECT 2
 USE d:\素数表文件\不能合成数统计.DBF ALIAS 不能合成数统计表
kssj=SECONDS()
 
 For i=1 to 500
       @ 5,12 say i
       n=i*1000020
     SELECT 1
     COUNT ALL FOR 无偶<n TO tj
          SELECT 2
          APPEND BLANK     &&增加一条空记录
         REPLACE 范围 WITH n
         REPLACE 总个数 WITH tj
ENDFOR
     =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
最后一步处理,不能合成数统计。

素数问题的解决是我学习编程永恒的动力。
2022-03-27 09:38
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE D:\表示算法\标准域.dbf ALIAS 标准域
SELECT 2
USE D:\表示算法\余数表.dbf ALIAS 余数表
 kssj=SECONDS()                      &&取出开始时间
      SELECT 1
       go 1
    && ys=0
       s1=0
   for i=1  to  8
       s1=s1+1
       SELECT 1
       go s1
       hzs1=互质数
          && jlh1=recn()
          && ys=mod(ys+hzs1,30)
       SELECT 1
        go 1
        s2=0
         for j=1  to  8
           s2=s2+1
             SELECT 1
             go s2
             hzs2=互质数
             && jlh2=recn()
              && ys=mod(ys+hzs2,30)
             SELECT 1
              go 1
               s3=0
               for l=1  to  8
               s3=s3+1
                 SELECT 1
                  go s3
                  hzs3=互质数
                  && jlh3=recn()
                  && ys=mod(ys+hzs3,30)
                    SELECT 1
                    go 1
                    s4=0
                  for m=1 to 8
                  s4=s4+1
                  SELECT 1
                  go s4
                   hzs4=互质数
                     && jlh4=recn()
                      SELECT 1
                    go 1
                    s5=0
                  for g=1 to 8
                  s5=s5+1
                  SELECT 1
                  go s5
                   hzs5=互质数
                   ys=mod(hzs1+hzs2+hzs3+hzs4+hzs5,30)
                    SELECT 2
                    APPEND BLANK
                    REPLACE 余数 WITH ys &&改成本次追加记录的字段              
                    endfor
                    endfor
                 endfor
            endfor
     endfor
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")

素数问题的解决是我学习编程永恒的动力。
2022-03-29 09:57
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE D:\逐步升级\素数式至19.dbf ALIAS 素式19  &&比制作表的素数值小(即下表)        原表在条件为真时
SELECT 2
USE D:\逐步升级\标记同跨度k生数.dbf ALIAS 同跨度k生数 &&比上边已筛除的素数值要大  在条件为假时参考表
SELECT 3
USE D:\逐步升级\临时素数式.dbf ALIAS 临素式  &&即将筛除素数余数的盛放表,与上表(参考表)素数值相同   在条件为真时制造表,即新表
SELECT 4
USE D:\逐步升级\素数式至23段落.dbf ALIAS 素式段落 &&比上边已筛除的素数值要大  在条件为真时参考表
kssj=SECONDS()   &&取出开始时间
SELECT 2
go 1
for wxhcs=1 to 2498 &&最外一层嵌套,根据表中记录条调节循环次数,wxhcs=外循环次数
  @ 15,20 say wxhcs  &&显示外循环次数
   SELECT 2
   jlt=记录条  &&给变量jlt赋值
   kd=跨度  &&给变量kd赋值
   qsh=起始号  &&给变量qsh赋值
         if  jlt>83
              for i=1  to  23
                  SELECT 1
                  go  qsh  &&起始号,把指针移动到开始位置
                      for  j=1  to   jlt
                       s19=素19
                       pdz=s19+(i-1)*9699690  &&pdz(判断值),等于素19+9699690的周期倍数
                       ys=mod(pdz,23)  &&ys(余数)等于判断值对素数23取模
                          if  ys=0
                          else
                           SELECT 3
                           APPEND BLANK
                           REPLACE 素式 WITH pdz
                           endif
                        SELECT 1
                        skip
                        endfor
                        SELECT 3
                        jlts=reccount()
                        go 1
                        ssq=素式 &&素式首
                        go  bottom
                        ssm=素式 &&素式末
                        if ssm-ssq=450 and jlts>82
                          SELECT 3
                          go 1
                          for k=1  to  jlts
                          ss=素式
                          SELECT 4
                           APPEND BLANK
                           REPLACE 素23 WITH ss
                           SELECT 3
                           skip
                           endfor
                         endif
                         select 3
                         DELETE ALL
                         PACK
              endfor
         endif
     SELECT 2
     skip
 endfor  &&    最外一层嵌套
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")


素数问题的解决是我学习编程永恒的动力。
2022-03-30 09:37
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE  D:\方程p减2的n次方\素数表万.DBF ALIAS 素数表万
SELECT 2
USE D:\方程p减2的n次方\一加m表.DBF ALIAS 一加m表
kssj=SECONDS()                      &&取出开始时间
FOR i=70 TO 100 STEP 2
@12,10 SAY i
IF MOD(i,3)=0
s=3
ELSE
s=1
ENDIF
IF MOD(i,5)=0
w=5
ELSE
w=1
ENDIF
IF MOD(i,7)=0
q=7
ELSE
q=1
ENDIF
IF MOD(i,11)=0
yy=11
ELSE
yy=1
ENDIF
IF MOD(i,13)=0
ys=13
ELSE
ys=1
ENDIF
IF MOD(i,17)=0
yq=17
ELSE
yq=1
ENDIF
IF MOD(i,19)=0
yj=19
ELSE
yj=1
ENDIF
IF MOD(i,23)=0
es=23
ELSE
es=1
ENDIF
IF MOD(i,29)=0
ej=29
ELSE
ej=1
ENDIF
IF MOD(i,31)=0
sy=31
ELSE
sy=1
ENDIF
IF MOD(i,37)=0
sq=37
ELSE
sq=1
ENDIF
IF MOD(i,41)=0
ssy=41
ELSE
ssy=1
ENDIF
IF MOD(i,43)=0
sss=43  && ss下边素数用着,出现了错误
ELSE
sss=1
ENDIF
IF MOD(i,47)=0
ssq=47
ELSE
ssq=1
ENDIF
FOR j=9 TO 13999 STEP 2
@22,20 SAY j
   IF MOD(j,i)=0
   LOOP
   ENDIF
  IF MOD(j,s)=0 AND s>1
  LOOP
 ENDIF
 IF MOD(j,w)=0 AND w>1
  LOOP
 ENDIF
  IF MOD(j,q)=0 AND q>1
  LOOP
 ENDIF
  IF MOD(j,yy)=0 AND yy>1
  LOOP
 ENDIF
 IF MOD(j,ys)=0 AND ys>1
  LOOP
 ENDIF
  IF MOD(j,yq)=0 AND yq>1
  LOOP
 ENDIF
  IF MOD(j,yj)=0 AND yj>1
  LOOP
 ENDIF
 IF MOD(j,es)=0 AND es>1
  LOOP
 ENDIF
 IF MOD(j,ej)=0 AND ej>1
  LOOP
 ENDIF
 IF MOD(j,sy)=0 AND sy>1
  LOOP
 ENDIF
 IF MOD(j,sq)=0 AND sq>1
  LOOP
 ENDIF
 IF MOD(j,ssy)=0 AND ssy>1
  LOOP
 ENDIF
 IF MOD(j,sss)=0 AND sss>1 && ss下边素数用着,出现了错误
  LOOP
 ENDIF
  IF MOD(j,ssq)=0 AND ssq>1
  LOOP
 ENDIF
SELECT 1
 GO 1
  COUNT ALL FOR 素数<=j/i TO tj
  SELECT 1
  GO 1
        FOR k=1 TO tj
        SELECT 1
        ss=素数
        jl=recno()
        pdz=j-i*ss
           SELECT 1
           GO 1
           COUNT NEXT i*tj+10 FOR 素数=pdz TO tj1  
           IF tj1=1
           EXIT
           ENDIF
         SELECT 1
        GO jl+1
        ENDFOR
   IF k>tj
   SELECT 2  
   APPEND BLANK            
   REPLACE m值 WITH i
   REPLACE n值 WITH j
   ENDIF
  ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是寻找Pi+mPj=N中的反例程序,m为正整数,Pi,Pj都是素数。找出小范围内的反例,当N大于一定值后,反例就不在出现了。

素数问题的解决是我学习编程永恒的动力。
2022-04-17 07:10
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
这几天挺郁闷的,手机和电脑都无法进入本网站,只有把网络关掉,用数据网络才能打开本网站,不知是何缘故?

素数问题的解决是我学习编程永恒的动力。
2022-04-25 23:30
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
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,"运行时间提示")
最近,由于时间过于紧张,没有时间编写vfp程序,把以前使用过的,发了上来,其实,自己想编写一个单位矩阵与周期矩阵耦合运算的程序,这里的运算规则不同于现在已有的规则,它是另一种算法规则。

素数问题的解决是我学习编程永恒的动力。
2022-05-03 22:37
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
对于编程而言,最重要的在于编程思路,也就是流程图。不同思路,编辑出来的结果,特别是运行速度,及耗用的时间,差别还是相当大的。所以,需要在思路上多下功夫。

素数问题的解决是我学习编程永恒的动力。
2022-05-11 07:21
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE  D:\方程p减2的n次方\素数表万.DBF ALIAS 素数表万
SELECT 2
USE D:\方程p减2的n次方\一加m表.DBF ALIAS 一加m表
kssj=SECONDS()                      &&取出开始时间
FOR i=70 TO 100 STEP 2
@12,10 SAY i
IF MOD(i,3)=0
s=3
ELSE
s=1
ENDIF
IF MOD(i,5)=0
w=5
ELSE
w=1
ENDIF
IF MOD(i,7)=0
q=7
ELSE
q=1
ENDIF
IF MOD(i,11)=0
yy=11
ELSE
yy=1
ENDIF
IF MOD(i,13)=0
ys=13
ELSE
ys=1
ENDIF
IF MOD(i,17)=0
yq=17
ELSE
yq=1
ENDIF
IF MOD(i,19)=0
yj=19
ELSE
yj=1
ENDIF
IF MOD(i,23)=0
es=23
ELSE
es=1
ENDIF
IF MOD(i,29)=0
ej=29
ELSE
ej=1
ENDIF
IF MOD(i,31)=0
sy=31
ELSE
sy=1
ENDIF
IF MOD(i,37)=0
sq=37
ELSE
sq=1
ENDIF
IF MOD(i,41)=0
ssy=41
ELSE
ssy=1
ENDIF
IF MOD(i,43)=0
sss=43  && ss下边素数用着,出现了错误
ELSE
sss=1
ENDIF
IF MOD(i,47)=0
ssq=47
ELSE
ssq=1
ENDIF
FOR j=9 TO 13999 STEP 2
@22,20 SAY j
   IF MOD(j,i)=0
   LOOP
   ENDIF
  IF MOD(j,s)=0 AND s>1
  LOOP
ENDIF
IF MOD(j,w)=0 AND w>1
  LOOP
ENDIF
  IF MOD(j,q)=0 AND q>1
  LOOP
ENDIF
  IF MOD(j,yy)=0 AND yy>1
  LOOP
ENDIF
IF MOD(j,ys)=0 AND ys>1
  LOOP
ENDIF
  IF MOD(j,yq)=0 AND yq>1
  LOOP
ENDIF
  IF MOD(j,yj)=0 AND yj>1
  LOOP
ENDIF
IF MOD(j,es)=0 AND es>1
  LOOP
ENDIF
IF MOD(j,ej)=0 AND ej>1
  LOOP
ENDIF
IF MOD(j,sy)=0 AND sy>1
  LOOP
ENDIF
IF MOD(j,sq)=0 AND sq>1
  LOOP
ENDIF
IF MOD(j,ssy)=0 AND ssy>1
  LOOP
ENDIF
IF MOD(j,sss)=0 AND sss>1 && ss下边素数用着,出现了错误
  LOOP
ENDIF
  IF MOD(j,ssq)=0 AND ssq>1
  LOOP
ENDIF
SELECT 1
GO 1
  COUNT ALL FOR 素数<=j/i TO tj
  SELECT 1
  GO 1
        FOR k=1 TO tj
        SELECT 1
        ss=素数
        jl=recno()
        pdz=j-i*ss
           SELECT 1
           GO 1
           COUNT NEXT i*tj+10 FOR 素数=pdz TO tj1  
           IF tj1=1
           EXIT
           ENDIF
         SELECT 1
        GO jl+1
        ENDFOR
   IF k>tj
   SELECT 2  
   APPEND BLANK            
   REPLACE m值 WITH i
   REPLACE n值 WITH j
   ENDIF
  ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是查找“1+m”中的反例程序,1表示素数,m表示m倍的素数,它们的和为正整数。

素数问题的解决是我学习编程永恒的动力。
2022-05-24 10:04
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE D:\素数式裂解\素数式5横.DBF ALIAS 素数式5
kssj=SECONDS()
x=5 && m已经作为一个变量存在,所以文件大的没边,形成了1.9亿的记录条
    For i=1 to 5
      FOR j=i+1  TO 6
         FOR h=j+1  TO 7
         FOR k=h+1  TO 8
         FOR m=k+1  TO 9
          ss1=i-1
          ss2=j-1
          ss3=h-1
          ss4=k-1
          ss5=m-1
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素1 WITH ss1 &&将B值付给素数式
          REPLACE 素2 WITH ss2 &&将B值付给素数式
          REPLACE 素3 WITH ss3 &&将B值付给素数式
          REPLACE 素4 WITH ss4 &&将B值付给素数式
          REPLACE 素5 WITH ss5 &&将B值付给素数式
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
直接产生数字9的抽5组合

素数问题的解决是我学习编程永恒的动力。
2022-05-29 20:08
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:939
专家分:683
注 册:2016-6-29
收藏
得分:0 
今年四月以来,由于时间紧迫,无法参与大家的讨论之中,很难享受到编程的乐趣,连计划编辑书籍的事情也搁置。

素数问题的解决是我学习编程永恒的动力。
2022-06-20 14:27
快速回复:优化程序或者从新编写求四生素数中项不能合成的偶数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041441 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved