数学中国

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

一款可瞬间判定素数的神奇小软件

[复制链接]
 楼主| 发表于 2008-9-9 15:13 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

[这个贴子最后由moranhuishou在 2008/09/09 03:18pm 第 1 次编辑]


Option Explicit
Private Sub Command1_Click()
Dim X As long,...
X = Val(Text1.Text)
If X <= 1 Then
Text1.Text = 2 & " is a prime"
End If
If X = 2 Then
Text1.Text = 3 & " is a prime"
End If
If ...
...
[color=&#35;DC143C]希望——
天山草
数A
simpley
哪位朋友把大整数运算的程序代码续写出来,十分感谢——
给我一个平台,还世界一个奇迹!


Next i
  Text1.Text = X & " is a prime"
End If
End If
  Loop

End If
End Sub
发表于 2008-9-9 16:11 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

[这个贴子最后由数学爱好者A在 2008/09/09 04:16pm 第 2 次编辑]

大整数运算
如果你的VB支持无符号32位整数和它的运算。那么可以这样设计这个程序:
首先定义两个16位无符号整数数组来存放大整数。这样
一个大整数S=An*65536^n+An-1*65536^(n-1)+.......a0*65536^0
另一个大整数y=Bn*65536^n+Bn-1*65536^(n-1)+.......B0*65536^0
这是这两个大整数就变成了65536进制的整数
按小学乘法,先定义一个更大的16位无符号整数数组F来存放大整数(最后运算结果)。
在定义另一个16位无符号整数数组G来存放大每次的运算结果(每位的运算结果)。
乘法这样算,和小学生一样用a0*B0。得到一个无符号32位整数,将低16位直接保存在G0中,将高16位作为进位c暂存起来。a1*B0+c,将低16位直接保存在G1中,将高16位作为进位c暂存起来,在算a2*B0+c,将低16位直接保存在G2中,将高16位作为进位c暂存起来……
这样一直算到an*B0+c低16位直接保存在Gn中,高16位保存在Gn+1中。
现在将G0,G1,……Gn+1和数组F0,F1,Fn+1对应相加。结果存在F0,F1,……Fn+1
同理做a0*B1,a1*B1+c,……an*B1+c,保存在G0,G1,……Gn+1中
现在将G0,G1,……Gn+1和数组F1(注意是从F1开始),F2,……Fn+2对应相加。结果存在F0,F1,Fn+2
同理做a0*B2,a1*B2+c,……an*B2+c,保存在G0,G1,……Gn+1中
现在将G0,G1,……Gn+1和数组F2(注意是从F2开始),F3,……Fn+3对应相加。结果存在F0,F1,……Fn+3
…………


 楼主| 发表于 2008-9-9 16:50 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

非常感谢让我顿开茅塞。
同时也非常惭愧,因为我至今还不知道数组怎么设置,看过教科书上的介绍,但试了几次,也没有弄成,因为“用不着”,就没有再试,觉得挺难的:)
慢慢消化吧。
发表于 2008-9-9 17:44 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

我的印象中,VB的数组定义,好象是
dim A() as int
发表于 2008-9-9 17:54 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

比如
我这样定义
dim i as integer
dim A(10) as integer
for i=0 to 9
A(i)=i*5
next i
那么就有
A(0)=0,A(1)=5,A(2)=10,A(3)=15,............A(9)=45
 楼主| 发表于 2008-9-10 09:23 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

好像不行——
一是程序不支持无符号运算;
二是即使支持,好像仅仅这样变换进制也简单不了多少。
或许是我还没有理解透?
发表于 2008-9-10 10:50 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

应该有,你回去好好查一下VB的数据类型。
如果你不改变进制,你就要用到位运算,效率更低!
发表于 2008-9-10 12:12 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

如果真的没有无符号32位整数类型,那么只能用byte类型来定义数组,16位改8位。进制由65536进制改成256进制。原理还是一样的。
 楼主| 发表于 2008-9-11 23:19 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

我对你的这个思想没有真正理解透,所以很难写出代码,如果您有把握,还烦请能够直接将代码写出,我再试试。
这两天上网有些不便。
发表于 2008-9-12 07:21 | 显示全部楼层

一款可瞬间判定素数的神奇小软件

哇!现在能发帖子了?今晚发个试试吧,一会儿还要去上班呢。
不知道俺这些大数的四则运算“平台”能不能适合楼主的要求。但不管如何,先发上来再说。至于楼主是否愿意公开他的理论,那是人家的自由,这个俺理解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-28 23:47 , Processed in 0.062500 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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