注册 登录
编程论坛 VB6论坛

编写一个程序求Q(奇数)减2的n次方其值没有素数的奇数

独木星空 发布于 2021-10-15 18:53, 6578 次点击
猜想每一个奇数(大于等于5的)都可以表示成一个素数+2^n形式,编写一个vb6程序,寻找一亿内的反例。例如1048573这个数,它小于2^20=1048576,也就是1048573-2^n这个式子中的n可以从1取到19,在这19次取值中,其结果假设没有素数,则次数是一个反例,其中有一次是素数,就不是反例,程序设计中,也可以考虑,当为真时,跳出循环,执行下一个奇数。最好先制作素数表,或许也不快,不如直接判断,比起判断一个数是否为素数要容易的多(是指运算时间上)。大概就这么个意思,有不清楚的地方,在商榷。
34 回复
#2
独木星空2021-10-16 05:40
SELECT 1
USE D:\方程p减2的n次方\素数表.DBF ALIAS 素数表
SELECT 2
USE D:\方程p减2的n次方\奇数表.DBF ALIAS 奇数表
kssj=SECONDS()                      &&取出开始时间
FOR i=9999 TO 99999 STEP 2
@12,10 SAY i
zs=INT(LOG(i)/LOG(2))
FOR j=1 TO zs
@22,20 SAY j
bpz=i-2^j           &&计算被判断值
Kf=INT(SQRT(bpz))                   &&求出被判断值的开方根
SELECT 1                    &&打开素数表
LOCATE FOR 素数>=kf                 &&根据开方根,查找最大素数
DO CASE
CASE EOF()                          &&如果超出素数表最后一条记录
GO BOTTOM
CASE 素数>kf                        &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
SKIP -1
ENDCASE
jlh=RECNO()
SELECT 1 &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
GO 1                                &&从第二条记录开始读取素数(3)
FOR k=1 TO jlh                    &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
qmz=MOD(bpz,素数)                   &&以读取的素数为条件,对被判断值求模
IF qmz=0 && OR qmz=2 OR qmz=6 OR qmz=8  如果符合这四个约定条件之一,就进行相应工作.如果一个也没有符合条件的,直接使记录指针向下移动一个(SKIP)
EXIT                                &&因为符合条件,则做完相应工作后跳出内循环
ENDIF
SKIP                                &&素数表指针向下移动一个
ENDFOR
IF k>jlh
exit
ENDIF
ENDFOR
IF j>zs
SELECT 2              &&打开保存求解结果的信息表
APPEND BLANK                        &&增加一条空记录
REPLACE 奇数 WITH i && 把bpz赋给素数        
endif
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是用vfp语言编写的寻找不能被表示的奇数。
#3
独木星空2021-10-16 05:42
SELECT 1
USE D:\方程p减2的n次方\素数表.DBF ALIAS 素数表
SELECT 2
USE D:\方程p减2的n次方\奇素数表.DBF ALIAS 奇素数表
kssj=SECONDS()                      &&取出开始时间
FOR i=99 TO 9999 STEP 2
@12,10 SAY i
zs=INT(LOG(i)/LOG(2))
FOR j=1 TO zs
@22,20 SAY j
bpz=i-2^j           &&计算被判断值
Kf=INT(SQRT(bpz))                   &&求出被判断值的开方根
SELECT 1                    &&打开素数表
LOCATE FOR 素数>=kf                 &&根据开方根,查找最大素数
DO CASE
CASE EOF()                          &&如果超出素数表最后一条记录
GO BOTTOM
CASE 素数>kf                        &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
SKIP -1
ENDCASE
jlh=RECNO()
SELECT 1 &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
GO 1                                &&从第二条记录开始读取素数(3)
FOR k=1 TO jlh                    &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
qmz=MOD(bpz,素数)                   &&以读取的素数为条件,对被判断值求模
IF qmz=0 && OR qmz=2 OR qmz=6 OR qmz=8  如果符合这四个约定条件之一,就进行相应工作.如果一个也没有符合条件的,直接使记录指针向下移动一个(SKIP)
EXIT                                &&因为符合条件,则做完相应工作后跳出内循环
ENDIF
SKIP                                &&素数表指针向下移动一个
ENDFOR
IF k>jlh
SELECT 2              &&打开保存求解结果的信息表
APPEND BLANK                        &&增加一条空记录
REPLACE 奇数 WITH i && 把bpz赋给素数   
REPLACE 参素 WITH bpz && 把bpz赋给素数
ENDIF
ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是用vfp语言编写的制作能被表示的奇数。
#4
独木星空2021-10-16 05:43
回复 楼主 独木星空
希望大家献计献策,把这个问题解决了,用vb6语言,不胜感激。
#5
独木星空2021-10-16 15:51
这个版块太冷清了。
#6
风吹过b2021-10-16 18:56
先传一个 手动验算的 excle 文档。先看看是不是这样的。
excle 中素数表,只给到了 1万以内,所以手动验算也只能在1万以内
只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录



#7
风吹过b2021-10-16 19:05
程序代码:
Option Explicit
Dim Ssb() As Long            '素数表,1亿以内素数表,一共5761455个
Dim ssbj As Long
Dim b2b(30) As Long         '2的倍数表,long 范围最大只能容纳 2^31,但最后一个数用不了,会超范围

Const 范围 As Long = 10000  '1亿以内,我光生成素数表就用了超过4分钟。你要测试1亿,直接把这1万改成1亿吧

Private Sub Command1_Click()
Dim i As Long, j As Long, o As Long, t As Long
Dim fly As Boolean, flj As Long, fl() As Long

flj = 0
ReDim fl(flj)

Call 日志("开始生成素数表")
Call 生成素数表

Call 日志("开始生成2的倍数表")
Call 生成倍数表

Call 日志("开始计算....")

For i = 5 To 范围 Step 2
    j = 1
    fly = False             '假设不符合
    Do While i > Ssb(j)
        t = i - Ssb(j)
        For o = 0 To 30         '这里会浪费循环次数,不管了
            If t = b2b(o) Then
                fly = True      '找到符合
                Exit For        '不再查找
            End If
        Next o
        If fly Then Exit Do     '找到符合不再查找
        j = j + 1
    Loop
    If Not fly Then             '如果都没找到
        flj = flj + 1           '保存结果
        ReDim Preserve fl(flj)
        fl(flj) = i
        Call 日志("找到第 " & flj & " 个: " & i)        '显示结果,注意 日志过程中有 DoEvents 命令,会拖慢运算速度
    End If
Next i

Call 日志("完成查找,共找到 " & flj & " 个。")

End Sub

Private Sub 生成倍数表()
'如果有倍数表,则不再生成
If b2b(30) > 0 Then Exit Sub

Dim i As Long
For i = 0 To 30
    b2b(i) = 2 ^ i
Next i
End Sub

Private Sub 生成素数表()
'如果已经有素数表,则不再生成
If ssbj > 3 Then Exit Sub

Dim i As Long, j As Long, t As Long
Dim sy As Boolean

'素数从2开始,需要指定
ssbj = 1
ReDim Ssb(ssbj)
Ssb(1) = 2

For i = 3 To 范围 Step 2
    sy = True
    t = Sqr(i)
    For j = 3 To ssbj
        If t < Ssb(j) Then Exit For
        If i Mod Ssb(j) = 0 Then
            sy = False
            Exit For
        End If
    Next j
    If sy Then
        ssbj = ssbj + 1
        ReDim Preserve Ssb(ssbj)
        Ssb(ssbj) = i
    End If
Next i
End Sub

Private Sub 日志(cs As String)
    With List1
        If .ListCount >= 100 Then
            .RemoveItem 0
        End If
        .AddItem Now & " " & cs
        DoEvents
    End With
End Sub
#8
ysr28572021-10-17 15:45
回复 7楼 风吹过b
Private Sub 日志(cs As String)
    With List1‘(试验显示list1变量未定义,无法运行,再学习一下)
        If .ListCount >= 100 Then
            .RemoveItem 0
        End If
        .AddItem Now & " " & cs
        DoEvents
    End With
End Sub
#9
ysr28572021-10-17 17:00
回复 8楼 ysr2857
Option Explicit
Dim Ssb() As Long            '素数表,1亿以内素数表,一共5761455个
Dim ssbj As Long
Dim b2b(30) As Long         '2的倍数表,long 范围最大只能容纳 2^31,但最后一个数用不了,会超范围

Const 范围 As Long = 10000  '1亿以内,我光生成素数表就用了超过4分钟。你要测试1亿,直接把这1万改成1亿吧

Private Sub Command1_Click()
Dim i As Long, j As Long, o As Long, t As Long, ja
Dim fly As Boolean, flj As Long, fl() As Long

flj = 0
ReDim fl(flj)

Call 日志("开始生成素数表")
Call 生成素数表

Call 日志("开始生成2的倍数表")
Call 生成倍数表

Call 日志("开始计算....")

For i = 5 To 范围 Step 2
    j = 1
    fly = False             '假设不符合
    Do While i > Ssb(j)
        t = i - Ssb(j)
        For o = 0 To 30         '这里会浪费循环次数,不管了
            If t = b2b(o) Then
                fly = True      '找到符合
                Exit For        '不再查找
            End If
        Next o
        If fly Then Exit Do     '找到符合不再查找
        j = j + 1
    Loop
    If Not fly Then             '如果都没找到
        flj = flj + 1           '保存结果
        ReDim Preserve fl(flj)
        fl(flj) = i
        Call 日志("找到第 " & flj & " 个: " & i)        '显示结果,注意 日志过程中有 DoEvents 命令,会拖慢运算速度
    End If
Next i

Call 日志("完成查找,共找到 " & flj & " 个。")
Text1 = flj
End Sub

Private Sub 生成倍数表()
'如果有倍数表,则不再生成
If b2b(30) > 0 Then Exit Sub

Dim i As Long
For i = 0 To 30
    b2b(i) = 2 ^ i
Next i
End Sub

Private Sub 生成素数表()
'如果已经有素数表,则不再生成
If ssbj > 3 Then Exit Sub

Dim i As Long, j As Long, t As Long, ja
Dim sy As Boolean

'素数从2开始,需要指定
ssbj = 1
ReDim Ssb(ssbj)
Ssb(1) = 2

For i = 3 To 范围 Step 2
    sy = True
    t = Sqr(i)
    For j = 3 To ssbj
        If t < Ssb(j) Then Exit For
        If i Mod Ssb(j) = 0 Then
            sy = False
            Exit For
        End If
    Next j
    If sy Then
        ssbj = ssbj + 1
        ReDim Preserve Ssb(ssbj)
        Ssb(ssbj) = i
         ja = " " & i '增加一条
    End If
Next i
End Sub

Private Sub 日志(cs As String)
Dim s$, i%, j, ja
Dim list1
s = Mid(ja, 2) '修改的部分
j = Split(s)
For i = 0 To UBound(j)
list1.AddItem j(i)
cs = " " & j(i)
Next
   
End Sub

改成这样后结果是:Text1=26.不知道结果对不对?(可能是不对,这样程序可以运行了,当输出改为Text1=i时,Text1=10001)

[此贴子已经被作者于2021-10-17 17:27编辑过]

#10
风吹过b2021-10-17 19:26
回复 8楼 ysr2857
list1 是需要要窗体上自己再放一个控件,这个控件显示 运行日志用的,程序里限制不超过100条记录。

#11
ysr28572021-10-17 20:43
回复 10楼 风吹过b
好的,我加了控件,试验了一下,可以运行了:

Option Explicit
Dim Ssb() As Long            '素数表,1亿以内素数表,一共5761455个
Dim ssbj As Long
Dim b2b(30) As Long         '2的倍数表,long 范围最大只能容纳 2^31,但最后一个数用不了,会超范围

Const 范围 As Long = 10000  '1亿以内,我光生成素数表就用了超过4分钟。你要测试1亿,直接把这1万改成1亿吧

Private Sub Command1_Click()
Dim i As Long, j As Long, o As Long, t As Long, ja
Dim fly As Boolean, flj As Long, fl() As Long

flj = 0
ReDim fl(flj)

Call 日志("开始生成素数表")
Call 生成素数表

Call 日志("开始生成2的倍数表")
Call 生成倍数表

Call 日志("开始计算....")

For i = 5 To 范围 Step 2
    j = 1
    fly = False             '假设不符合
    Do While i > Ssb(j)
        t = i - Ssb(j)
        For o = 0 To 30         '这里会浪费循环次数,不管了
            If t = b2b(o) Then
                fly = True      '找到符合
                Exit For        '不再查找
            End If
        Next o
        If fly Then Exit Do     '找到符合不再查找
        j = j + 1
    Loop
    If Not fly Then             '如果都没找到
        flj = flj + 1           '保存结果
        ReDim Preserve fl(flj)
        fl(flj) = i
        Call 日志("找到第 " & flj & " 个: " & i)        '显示结果,注意 日志过程中有 DoEvents 命令,会拖慢运算速度
    End If
Next i

Call 日志("完成查找,共找到 " & flj & " 个。")
Text1 = flj
Combo1 = List1.ListCount
End Sub

Private Sub 生成倍数表()
'如果有倍数表,则不再生成
If b2b(30) > 0 Then Exit Sub

Dim i As Long
For i = 0 To 30
    b2b(i) = 2 ^ i
Next i
End Sub

Private Sub 生成素数表()
'如果已经有素数表,则不再生成
If ssbj > 3 Then Exit Sub

Dim i As Long, j As Long, t As Long, ja
Dim sy As Boolean

'素数从2开始,需要指定
ssbj = 1
ReDim Ssb(ssbj)
Ssb(1) = 2

For i = 3 To 范围 Step 2
    sy = True
    t = Sqr(i)
    For j = 3 To ssbj
        If t < Ssb(j) Then Exit For
        If i Mod Ssb(j) = 0 Then
            sy = False
            Exit For
        End If
    Next j
    If sy Then
        ssbj = ssbj + 1
        ReDim Preserve Ssb(ssbj)
        Ssb(ssbj) = i
         ja = " " & i '增加一条
    End If
Next i
End Sub

Private Sub 日志(cs As String)
    With List1
        If .ListCount >= 100 Then
            .RemoveItem 0
        End If
        .AddItem Now & " " & cs
        DoEvents
    End With
End Sub

'加了控件list1就可以运行了,结果是找到26个符合条件的素数。
#12
ysr28572021-10-17 21:14
传一下程序运行结果的图片:
只有本站会员才能查看附件,请 登录
#13
ysr28572021-10-17 21:19
咋不都是素数?有能被3或5整除的!
#14
风吹过b2021-10-17 21:54
以下是引用ysr2857在2021-10-17 21:19:05的发言:

咋不都是素数?有能被3或5整除的!

仔细看一下题,要求是  猜想每一个奇数(大于等于5的)都可以表示成一个素数+2^n形式,  找反例。
所以找到的都是奇数,不是素数 。你可以看下我 6楼上传的 excle 文档。
可以拿这个文档对结果进行验算。

#15
ysr28572021-10-17 22:05
回复 14楼 风吹过b
嗯嗯好的,明白了,那就对了!谢谢!
#16
wmf20142021-10-18 02:51
经验证,一亿内有4457973个数不符合题主猜想,比如127就是楼主所说的反例。验证代码如下(编译后用时5秒即可得到一亿内的结果)
程序代码:
Dim pri(100000000) As Byte, gusnum(10) As Long

Sub getpri()
  '获取一亿内素数map,5秒内可完成
  Dim i As Long, j As Long
  pri(0) = 1
  pri(1) = 1
  For i = 4 To 100000000 Step 2
    pri(i) = 1
  Next
  For i = 3 To 10000 Step 2
    If pri(i) = 0 Then
      For j = i * i To 100000000 Step i * 2
        pri(j) = 1
      Next
    End If
  Next
End Sub

Private Sub Command1_Click()
  '验证猜想,统计不符合的总数,并把前10个数存到数组中供验证
  Dim i As Long, j As Long, k As Long, t As Double
  t = Timer()
  For i = 5 To 100000000 Step 2
    j = 2
    Do While j < i
      If pri(i - j) = 0 Then Exit Do
      j = j * 2
    Loop
    If j >= i Then
      If k <= 10 Then gusnum(k) = i
      k = k + 1
    End If
  Next
  MsgBox k & "个数无法表示为p+2^N的形式,用时" & Timer() - t & ""
End Sub

Private Sub Form_Load()
  getpri
  Command1_Click
End Sub
#17
独木星空2021-10-18 07:19
回复 16楼 wmf2014
因为系统提示结贴,今天没有来的及浏览帖子,就急急忙忙结贴了,结贴后才看到先生的回帖,抱歉,没有给你送分。
#18
风吹过b2021-10-18 08:46
素数,用筛法本来就是快,但我不会,没去看过相关算法,只是了解过而以。一般还有一个整理过程。
但在这个问题不需要整理,直接判断,比一个一个的去比较更快。

还是 wmf2014 的算法好。

#19
独木星空2021-10-19 17:06
回复 16楼 wmf2014
人生的路,只能往前走,从来就没有回头的路。所以,没有二次选择,无论选对,还是选错,都无法改过。
#20
独木星空2021-11-06 12:46
回复 16楼 wmf2014
wmf2014先生的算法,在这个问题上应该是最好的。
#21
独木星空2021-12-18 09:41
回复 16楼 wmf2014
我对您始终有歉意。在増分之前,没有看到你的帖子,很是过意不去。在以后有时间,一定和先生探讨vb6编程问题。
#22
wmf20142021-12-19 15:26
不要太纠结,能共同学习进步就好。
#23
独木星空2022-04-01 22:49
回复 7楼 风吹过b
有空时。对照vfp9.0来理解vb6的编码。
#24
独木星空2022-06-30 07:13
这个帖子的初衷就是想对照学习一下vb6,因为当时刚下载,对vb6一点也不会(最早接触是2010年前后的事,后来一直也没有顾着),我学习编程的动力就是对素数问题感兴趣,所以每每解决问题时也比较兴奋,这使我能想到好的解决问题的流程,更容易构造框架。比较两种编程语言可以看出,基本的构件从整体说是一样的,只有侧重点,具体语句多少有点差别。
#25
独木星空2022-07-30 19:10
编程的兴趣来源于对有关素数问题数据的需求,如果没有对数据的渴望,怕是到现在我也不知道编程是个什么东东。
#26
风吹过b2022-07-31 10:02
编程变是来源算成兴趣。我没系统的学过算法,所以拿到问题,只会按 要求 一步一步的死的写,不会写变通的算法。
如这个程序,只会按步骤,一步一步的先做什么,再做什么,然后每步输出 日志来。
#27
独木星空2022-08-13 06:23
没有人打扰这里的宁静.
    本人由于时间原因也没有能力使其活跃,当时间充裕时一定来这里和大家分享编程乐趣。
#28
独木星空2022-08-18 22:26
很多时候,人气是大伙捧起来的,最重要的原因是你的有自己的独到见解。
#29
独木星空2022-09-16 20:46
在vfp版块,有新人连续发了四五个帖子。微信小程序,还没来得及发表回复,就已经被删除了。在本版块有一个帖子,发表后,声明自己已经解决,我正好看到,想试着用一下版主的权限,管理那个帖子,几次都是乱码,出现了不可操作界面,不知道是咋回事?是以版主的身份进去的,可是,那个菜单的功能都不能用。为何?
#30
风吹过b2022-09-17 10:44
几个 声明自己已经解决的贴子,已没实质内容并且申请删贴的,我都已删了。没遇到你说的那些情况,所以不太清楚。
#31
独木星空2022-09-29 07:40
即便,每天都来这里看一看,如果不发帖,也留不下,任何记录。
本帖主要目的:就是通过vb6与vfp的编程对比(对同一个问题而言)来学习,熟练vb6的。
#32
独木星空2022-09-30 07:40
解决问题是一种艺术,能提出好的问题那才显示出艺术的才华。
#33
独木星空2022-10-17 22:44
单位元矩阵算法:
模5矩阵    0.2    0.4    0.6    0.8
0.2    0.4    0.6    0.8    1
0.4    0.6    0.8    1    1.2
0.6    0.8    1    1.2    1.4
0.8    1    1.2    1.4    1.6
5的剩余类    统计2
0.4    1
0.6    2
0.8    3
1    4
1.2    3
1.4    2
1.6    1
合计    16
周期    0    1    2    3    4    5    6    7    8    9
0    0    1    2    3    4    5    6    7    8    9
1    1    2    3    4    5    6    7    8    9    10
2    2    3    4    5    6    7    8    9    10    11
3    3    4    5    6    7    8    9    10    11    12
4    4    5    6    7    8    9    10    11    12    13
5    5    6    7    8    9    10    11    12    13    14
6    6    7    8    9    10    11    12    13    14    15
7    7    8    9    10    11    12    13    14    15    16
8    8    9    10    11    12    13    14    15    16    17
9    9    10    11    12    13    14    15    16    17    18
周期    统计
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
9    10
10    9
11    8
12    7
13    6
14    5
15    4
16    3
17    2
18    1
合计    100
这种算法,是耦合的实际应用,为什么,把一个算法要发在这里,一个非常重要的客观原因就是,算法来源于,解决实际问题,我的合成方法论是解决线性不定方程的满足条件的正整数解组数。
#34
独木星空2022-10-18 07:42
这个版块的排列顺序与VFP那个版块排列不一样,那个版块每一期排列在一起,即往期的主题,回帖后不显示在当前页面。
#35
独木星空2022-10-23 19:36
周期/分值    6    7    8    9    10    11    12
0    6    7    8    9    10    11    12
6    12    13    14    15    16    17    18
12    18    19    20    21    22    23    24
18    24    25    26    27    28    29    30
24    30    31    32    33    34    35    36
30    36    37    38    39    40    41    42
36    42    43    44    45    46    47    48
42    48    49    50    51    52    53    54
48    54    55    56    57    58    59    60
54    60    61    62    63    64    65    66
60    66    67    68    69    70    71    72
66    72    73    74    75    76    77    78
72    78    79    80    81    82    83    84
78    84    85    86    87    88    89    90
84    90    91    92    93    94    95    96
90    96    97    98    99    100    101    102
96    102    103    104    105    106    107    108
102    108    109    110    111    112    113    114
108    114    115    116    117    118    119    120
114    120    121    122    123    124    125    126
120    126    127    128    129    130    131    132
126    132    133    134    135    136    137    138
132    138    139    140    141    142    143    144
138    144    145    146    147    148    149    150
144    150    151    152    153    154    155    156
150    156    157    158    159    160    161    162
156    162    163    164    165    166    167    168
162    168    169    170    171    172    173    174
168    174    175    176    177    178    179    180
174    180    181    182    183    184    185    186
180    186    187    188    189    190    191    192
186    192    193    194    195    196    197    198
192    198    199    200    201    202    203    204
198    204    205    206    207    208    209    210
204    210    211    212    213    214    215    216
210    216    217    218    219    220    221    222
216    222    223    224    225    226    227    228
222    228    229    230    231    232    233    234
228    234    235    236    237    238    239    240
234    240    241    242    243    244    245    246
240    246    247    248    249    250    251    252
246    252    253    254    255    256    257    258
252    258    259    260    261    262    263    264

统计6    1    6    21    56    126
1    1    6    21    56    126
6    6    36    126    336    756
21    21    126    441    1176    2646
56    56    336    1176    3136    7056
126    126    756    2646    7056    15876
252    252    1512    5292    14112    31752
462    462    2772    9702    25872    58212
792    792    4752    16632    44352    99792
1281    1281    7686    26901    71736    161406
1966    1966    11796    41286    110096    247716
2877    2877    17262    60417    161112    362502
4032    4032    24192    84672    225792    508032
5432    5432    32592    114072    304192    684432
7056    7056    42336    148176    395136    889056
8856    8856    53136    185976    495936    1115856
10752    10752    64512    225792    602112    1354752
12642    12642    75852    265482    707952    1592892
14412    14412    86472    302652    807072    1815912
15946    15946    95676    334866    892976    2009196
17136    17136    102816    359856    959616    2159136
17892    17892    107352    375732    1001952    2254392
18152    18152    108912    381192    1016512    2287152
17892    17892    107352    375732    1001952    2254392
17136    17136    102816    359856    959616    2159136
15946    15946    95676    334866    892976    2009196
14412    14412    86472    302652    807072    1815912
12642    12642    75852    265482    707952    1592892
10752    10752    64512    225792    602112    1354752
8856    8856    53136    185976    495936    1115856
7056    7056    42336    148176    395136    889056
5432    5432    32592    114072    304192    684432
4032    4032    24192    84672    225792    508032
2877    2877    17262    60417    161112    362502
1966    1966    11796    41286    110096    247716
1281    1281    7686    26901    71736    161406
792    792    4752    16632    44352    99792
462    462    2772    9702    25872    58212
252    252    1512    5292    14112    31752
126    126    756    2646    7056    15876
56    56    336    1176    3136    7056
21    21    126    441    1176    2646
6    6    36    126    336    756
1    1    6    21    56    126

合成值    统计6
6    1
7    6
8    21
9    56
10    126
11    246
12    432
13    702
14    1077
15    1582
16    2262
17    3162
18    4328
19    5808
20    7653
21    9898
22    12633
23    15948
24    19934
25    24684
26    30309
27    36834
28    44409
29    53184
30    63310
31    74934
32    88284
33    103334
34    120309
35    139434
36    160936
37    185010
38    212100
39    242060
40    275205
41    311850
42    352317
43    396816
44    446166
45    499996
46    558726
47    622776
48    692588
这是耦合矩阵算法,在不定方程中,如果限制未知数不能取某数的倍数,则可以分别计算单位矩阵和周期矩阵,最后单位矩阵与周期矩阵耦合,就可以获得最终结果,在Excel中用函数SUMIF(B$368:Z$410,BC368,AC$368:BA$410)

如何转化成vb6语言?
1