| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 29533 人关注过本帖
标题:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
取消只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
回复 104楼 xianfajushi
对,是11位的,需要大整数计算程序,把数值当字符串的计算程序,我的程序是模仿手工计算的,效率低速度太慢。
谢谢您!欢迎指导!
2020-02-23 12:20
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
对,我的程序速度太慢!你的时间是多少?不到1秒?这不是很快吗?是vc版程序?我不懂vc程序代码。
2020-02-23 13:11
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
回复 109楼 xianfajushi
所谓的快速法就是前面的判断素数的程序,可以计算几十位几百位的大整数。当然计算孪生素数对不需要这么大的数据,但也是超过了11位,朋友要的,不知道要算到多少位。我的要求是能算上千万位的超大整数的,最低也是几万位的。
2020-02-23 13:36
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
回复 109楼 xianfajushi
谢谢您!欢迎有空再弄,辛苦了!
2020-02-23 13:37
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
回复 112楼 xianfajushi
是的,我的程序仅能算到2万位再大就溢出,时间长,一步2万位的乘法或除法要几十分钟甚至一个小时,高手可以做到毫秒级的,没人指导我。
谢谢您!你的程序已经很快了,不知道能算几万位的不能?
2020-02-23 14:29
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
好的,非常感谢!我试试能算多大的。谢谢!我找到的乘法除法程序都是vc版的,您能解释一下吗?前面有一个乘法的程序?
有空再弄!谢谢您!
2020-02-23 16:29
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
您的程序我没法用,不是vb版的,和我的vb6.0不兼容?多条语句变成了红字,无法改,提示是缺少结束语或缺少表达式。
2020-02-23 16:54
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
谢谢!我向你学习,学习学习这个程序!
下面是网上搞到的加减法程序,0是加法,1是减法,速度比我的程序快一点好象,时间是此程序为E-03,我的程序时间是E-02,相同的数据,是差一个小数点吧?
Private Sub Command1_Click()
Dim t As Double
t = Timer
Text3 = js(Trim(Text1), Trim(Text2), 0)
Text4 = Timer - t
End Sub

Private Sub Command2_Click()
Dim t As Double
t = Timer
Text3 = js(Trim(Text1), Trim(Text2), 1)
Text4 = Timer - t
End Sub

Private Sub Command3_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
End Sub

'2个长整数的加减法运算(最大长度无限)
Function js(num1 As String, num2 As String, mType As Integer) As String
Dim a1 As String, a2 As String
Dim s1() As String, S2() As String, Resu() As String
Dim I As Integer, J As Integer, k As Integer, Tmp As String
Dim t1 As Integer, t2 As Integer, JW As Integer, Fh As String
If Not IsNumeric(num1) Or Not IsNumeric(num2) Then
MsgBox "参于运算的只能是数字,不能含有其他字符", vbCritical, "错误提示"
Exit Function
End If
If Len(num1) < Len(num2) Or (Len(num1) = Len(num2) And Left(num1, 1) < Left(num2, 1)) Then
a1 = num2
a2 = num1
Fh = IIf(mType = 1, "-", "") '减法运算出现负数的情况
Else
a1 = num1
a2 = num2
End If
I = Len(a1)
J = Len(a2)
ReDim s1(I - 1), S2(J - 1)
ReDim Resu(IIf(mType = 0, I, I - 1))
For k = Len(a1) To 1 Step -1 '把数a1逐个放入数组s1
s1(I - k) = Mid(a1, k, 1)
Next
For k = Len(a2) To 1 Step -1 '把数a2逐个放入数组s2
S2(J - k) = Mid(a2, k, 1)
Next
JW = 0
For k = 0 To UBound(Resu) '从个位数开始相加减,结果入入数组resu
If k > UBound(s1) Then
t1 = 0
Else
t1 = Val(s1(k))
End If
If k > UBound(S2) Then
t2 = 0
Else
t2 = Val(S2(k))
End If
Select Case mType
Case 0 '加法运算
Tmp = t1 + t2 + JW
If Len(Tmp) > 1 Then
JW = Val(Left(Tmp, Len(Tmp) - 1))
Else
JW = 0
End If
Tmp = Right(Tmp, 1)
Case 1 '减法运算
I = t1 + JW - t2
If I < 0 Then
Tmp = I + 10
JW = -1
Else
Tmp = I
JW = 0
End If
End Select
Resu(k) = Tmp
Next
J = UBound(Resu)
For i = 0 To j '合并数组resu,结果输出到js1
js = js & Resu(J - I)
Next
For i = 1 To Len(js) '去掉前面的0
If Mid(js, I, 1) > "0" Then Exit For
Next
js = Fh & Mid(js, I)
If Len(js) = 0 Then
js = 0
Else
js = js
End If
End Function


[此贴子已经被作者于2020-2-23 19:03编辑过]

2020-02-23 18:52
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
回复 120楼 xianfajushi
输出结果是js,程序运行结果是正确的,速度没有版主wmf2014的快,优点是可以算无穷多位就是位数不受限制,如果版主能优化的话,非常感谢!非常欢迎!
2020-02-23 21:01
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:801
专家分:70
注 册:2020-2-10
收藏
得分:0 
回复 122楼 xianfajushi
谢谢指导关注!据说利用快速傅立叶变换或数论变换的大整数的乘法除法程序可以达到毫秒级的!我不懂,前面的vc版的程序也是快速乘法程序,不懂,好像就是利用快速傅立叶变换的乘法程序。
非常感谢!欢迎沟通欢迎关注!向你学习!
2020-02-24 05:47
快速回复:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
数据加载中...
 
   



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

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