- 注册时间
- 2011-10-22
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 462
- 在线时间
- 小时
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
×
我目前有一个难题,到这里来请求帮助,希望高手能伸出援手。
我有一个等着急用的用VFP语言编写的程序,想用郭老师的代码实现大数快速运行测试,虽然郭老师的代码可以任意下载,可是我只懂一点VFP,可惜郭老师那么好的代码我不会用,现在我希望有高手用郭老师的代码把我的程序翻译过来。下面的程序就是我说的代码,虽然高手现在都不用这个过时的代码,但我的程序代码旁边都有说明,所以代码不会成为翻译障碍的。代码下面就是测试数据,我的程序最大只能运行8-9位数字,用郭老师的程序代码那怕能运行出十几位数字我满足了,如果真的能运行出十位数字以上,我愿意用1000元表示感谢!我的QQ:2624678166
D=2 &&要输入数:D=
W=4096 &&要输入数:W=
L=11111111111 && 待输出T的最大值,若能运行大数可随时加大
k=2*W &&常量
for b=1 to L && 进入外循环从b=1开始, L是b的最大值
T=k*b+1 &&用前面得到的b和已知的k计算T=k*b+1
M1=2 &&常量
u=mod(M1,T) &&计算M1与T的余数u,这是后面的参照值
for v=1 to W && 进入二层循环从v=1开始, W是v的最大值
M2=D^v &&用前面得到的v和已知的D计算M2=D^v
if M2>T-1 and M2>0 &&如果M2>T-1,则取大于T-1的最小值M2(其实是取v的最小值)
M=D^v+1 &&用前面得到的最小值v和已知的D计算M=D^v+1
for i=v to W && 进入内循环次数从i=v开始,W是i的最大值
F=mod(M,T) &&计算M与T的余数F
M=(F-1)*D+1 &&用前面得到的F与已知的D计算新的M,再返回上一步。
if F=0 &&如果 F=0
if i=W &&并且如果 i=W
F1=mod(T-1,W) &&计算T-1与W的余数F1
if F1=0 &&如果 F1=0
?'T=',T &&输出:T=
endif &&这是与 if 对应的循环语句
endif
endif
ENDFOR &&这是与for to 对应的循环语句
EXIT && 这是取M2最小值(也就是v的最小值)的循环语句
endif
ENDFOR
ENDFOR
测试数据
1、当输入D=2、W=4096, L=4000000011111111111111111111时
输出应该是 114689 、 26017793 、 63766529 、 190274191361 、 1256132134125569 、 568630647535356955169033410940867804839360742060818433
2、当输入D=2、W=2048, L=4000000011111111111111111111时
输出应该是319489、974849、167988556341760475137、3560841906445833920513等
3、当输入D=2、W=8192, L=4000000011111111111111111111时
输出应该是 2710954639361 、 2663848877152141313 、 3603109844542291969 、 319546020820551643220672513 |
|