标题:解限制条件下线性不定方程的解组数
只看楼主
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:335
专家分:1125
注 册:2014-4-13
得分:0 
如果增加未知数,还是有优化的空间的,这个问题是可以用多项式乘法来表达的,由于多项式是一个式子,就可以看做是多项式乘方,由此可以用快速幂方法计算。
程序代码:
Function Solaa(ByVal sum&, ByVal n&, Optional ByVal mo&) As Double

    Dim i&, j&, a&, b&, xa&, xb&
    If sum < n Then
      Solaa = 0
      Exit Function
    End If
    Dim s() As Double
    Dim x() As Double
    ReDim s(1 To sum, 0 To 1)
    ReDim x(1 To sum, 0 To 1)
    
    
    For i = 1 To sum
        If i Mod mo Then
        
           x(i, 1) = 1
           s(i, 1) = 1
        End If
           
    Next
    
    a = 0
    b = 1
    xa = 0
    xb = 1
    n = n - 1
    Do While n > 0
    
    If n And 1& Then
           
        For i = 1 To sum - 1
              If s(i, b) Then
                For j = 1 To sum - i
                    If x(j, xb) Then s(i + j, a) = s(i + j, a) + s(i, b) * x(j, xb)
                Next
              End If
        Next
        
       
        a = a Xor 1&
        b = b Xor 1&
       
        
         For i = 1 To sum
          s(i, a) = 0
         Next
         
     End If
     
     n = n \ 2
     
     If n = 0 Then Exit Do
        For i = 1 To sum - 1
              If x(i, xb) Then
                For j = 1 To sum - i
                    If x(j, xb) Then x(i + j, xa) = x(i + j, xa) + x(i, xb) * x(j, xb)
                    
                Next
               
              End If
        Next
        xa = xa Xor 1&
        xb = xb Xor 1&
       
        
         For i = 1 To sum
            x(i, xa) = 0
         Next
        
    
    Loop
    
    Solaa = s(sum, b)
End Function


在未知数比较多的情况下,速度的提升还是比较明显的

和 5000 ,50 未知数 模 3 时间 6.5 秒 未优化前要运行 26.5 秒

收到的鲜花
  • mrexcel2022-11-25 20:36 送鲜花  5朵  
2022-11-25 19:03
独木星空
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
没有一个人,会对同一问题一直关注。

素数问题的解决是我学习编程永恒的动力。
2022-12-12 20:52
独木星空
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
时间得不到满足,啥事也就不做了。

素数问题的解决是我学习编程永恒的动力。
2023-03-28 21:32
独木星空
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
这个月看样子不选了。其实,在没有做版主的时候,想做,做了就后悔,怎么说呢?你做个版主得有个样,没有两把刷子,也敢来这里叫卖。

素数问题的解决是我学习编程永恒的动力。
2023-04-10 22:57
独木星空
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
很多时候,都不是自己想象的,是什么就是什么。需要自己认真反省。

素数问题的解决是我学习编程永恒的动力。
2023-04-15 23:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510483-1-1.html




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

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