数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 20465|回复: 57

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

[复制链接]
发表于 2007-1-3 11:30 | 显示全部楼层 |阅读模式
在VF语言环境下找出随机产生的m位的偶数所表示为的素数对
1、先建立结构如下的数据库:
  Field   字段名          类型             宽度
      1   XH            数值型            12
      2   XSS           数值型            20
      3   DSS           数值型            20
2、编一个能判断一个自然数是否为素数的程序bbss.prg :
s=1
do whil .t.
IF s>SQRT(q)
EXIT
ENDIF
s=s+2
GO 1
REPLACE xss with 1
IF q/s=INT(q/s)
GO 1
REPLACE xss with 0
EXIT
ENDIF
Endd
3、再编一个主程序:
CLEAR ALL
CLEAR
SET TALK off
sja=TIME()
inpu ';输入偶数位数'; to m
p=INT(RAND()*10^m)
IF p/2>INT(p/2)
p=p+1
endi
use aa
DELETE ALL
PACK
DIMENSION a(3)
APPEND BLANK
REPLACE xss with 1,dss with p
q=p-3
do bbss
GO 1
IF xss=1
a(1)=1
a(2)=3
a(3)=q
APPEND FROM arra a
ENDIF
u=3
do while .t.
IF u>p-u
EXIT
ENDIF
u=u+2
q=u
do bbss
GO 1
IF xss=1
a(2)=u
ENDIF
q=p-u
do bbss
GO 1
IF xss=1 and u=a(2)
a(1)=RECc()
a(2)=u
a(3)=p-u
APPEND FROM arra a
ENDIF
endd
sjb=TIME()
SET TALK ON
k=LOG10(RECCOUNT())
?';偶数';+STR(p,m)+';共可表示为';+STR(RECCOUNT()-1,k+1)+';对素数的和';
?sja, "",sjb
执行程序结束后可在屏幕上显示出用时和素数对的数量。
打开数据库即可见到各对素数。
发表于 2008-5-11 07:32 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

赵先生:您好!
    希望您能上传一个包含 PRG 和 DBF 的  rar 文件——下载并解压缩到 D 盘后,
是可执行的。
    谢谢!
 楼主| 发表于 2008-5-12 04:47 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

[这个贴子最后由zhaolu48在 2008/05/12 04:51am 第 1 次编辑]

谢谢尹先生关注,
现按您的要求,把“找素数对”的文件夹上传到帖子上了。
主程序名称为“zssd.prg”,
数据库名称为“aa.dbf”。
需要在visual foxpro语言环境下运行。
如果是5位的偶数,程序在2-4秒左右就可完成任务。
如果是6位数,完成任务就需要40秒到两分钟了。
只要把下载的压缩文件解压到硬盘上,打开VF,点下拉菜单“程序”,再点运行,寻找到文件夹“找素数对”,再点zssd.prg,按程序给出的提示操作就可以了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-5-12 05:00 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

使用程序后,请提出修改意见,谢谢!
发表于 2008-5-12 08:31 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

赵先生:您好!
    执行您的 rar 中的程序,计算准确。
    但因其中的偶数,是“随机产生的”,用起来不够方便。建议上传一个
(在限定范围内)可输入“任意偶数”的 prg 和相关的 dbf。
    此外,不知可否,请先生按计算值Pj(1,1)的表达式:
         Pj(1,1)=x/2 ∏ (1-1/p) ∏ (1-2/p), 2≤p≤√x
                    p|x        p┤x
               (x为偶数,“┤”为不整除)
编制出 Pj(1,1).prg 和相关的 dbf。
    谢谢!
 楼主| 发表于 2008-5-12 09:49 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

>执行您的 rar 中的程序,计算准确。
>   但因其中的偶数,是“随机产生的”,用起来不够方便。建议上传一个
>(在限定范围内)可输入“任意偶数”的 prg 和相关的 dbf。
这个很容易,只把程序zssd.prg 加上一个条件语句就可以了,其余可一点不动。
下面把改造过的相应压缩文件夹传上来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-5-12 10:01 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

>  此外,不知可否,请先生按计算值Pj(1,1)的表达式:
>        Pj(1,1)=x/2 ∏ (1-1/p) ∏ (1-2/p), 2≤p≤√x
>                   p|x        p┤x
>              (x为偶数,“┤”为不整除)
>编制出 Pj(1,1).prg 和相关的 dbf。
  我想这不会很困难,等有时间,我给先生编出来
  会比编找素数对的程序简单,并且程序运行时间也比找素数对短得多,因此容许的偶数也可以比较大。
  可惜的是,我只会编VF环境下的程序,其它计算软件我都没学。
  VF允许的偶数位数不能超过20,而其它计算软件几乎可以是任意大小的偶数。
发表于 2008-5-12 10:38 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对


    我只懂一点点 VF 语言,正好向先生请教。
    等待您编出的 Pj(1,1).prg 和相关的 dbf。
发表于 2008-5-12 11:37 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

赵先生:您好!
    您改造过的zssd.prg 的前几行是:
----------------------------------------------
CLEAR ALL
CLEAR
SET TALK off
acce ';键盘输入偶数/随机产生偶数(j/回车)'; to pd
IF pd=';j';
inpu ';请输入指定的偶数: '; to p
?';您输入的偶数是:';+STR(p,20)
ELSE
inpu ';输入偶数位数: '; to m
p=INT(RAND()*10^m)
IF p/2>INT(p/2)
p=p+1
?';随机产生的偶数是';+STR(p,20)
ENDIF
ENDIF
----------------------------------------------
    执行了多次zssd.prg ,回车后,都未显示“请输入指定的偶数”。
其中显示的两次如附件的“随机产生的偶数”。
    请您指教如何操作。
   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-5-12 13:52 | 显示全部楼层

在VF语言环境下找出随机产生的m位的偶数所表示为的素数对

[这个贴子最后由zhaolu48在 2008/05/12 03:35pm 第 2 次编辑]

>执行了多次zssd.prg ,回车后,都未显示“请输入指定的偶数”。
>其中显示的两次如附件的“随机产生的偶数”。
>   请您指教如何操作。
在出现“键盘输入偶数/随机产生偶数(j/回车)”时
键入“j”再回车,就会出现提示“请输入指定的偶数:”,
然后在其后面输入给定的偶数再回车,就可以了。
这里的“j”是“键盘”一词汉语拼音的第一个字母。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-23 06:42 , Processed in 0.088810 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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