题目来源:大工慕课 链接
原题:Visual Basic程序设计教程(第二版)龚沛曾主编,高等教育出版社 实验6-6
作者:Caleb Sung
题目要求
验证哥德巴赫猜想:任意一个大于2的偶数都可以表示成两个素数之和。编程将6~100之间的全部偶数表示为两个素数之和,在列表框显示结果,最后Label1显示共有多少对素数之和,效果如图所示。
提示:
- 编一求素数的函数prime(m),若m是素数,则函数的返回值为True,否则为False。
- 主调程序对已知6~100之间的全部偶数Even,把它分解成两个奇数Odd1和Odd2(Even-Odd1),先调用
prime
函数,判断Odd1是否是素数,若不是素数,则不必再对Odd2进行判断;否则再判断Odd2,若都是素数,则添加到列表框。利用两重循环来实现,外循环变量Even(6~100的偶数),内循环将Odd1(3~Even/2之间的奇数)和Odd2(Even-Odd1)进行判断。
参考代码
Function prime(ByVal m As Integer) As Boolean
prime = True
Dim i%
For i = 2 To m - 1
If (m Mod i) = 0 Then prime = False: Exit Function
Next i
End Function
Private Sub Command1_Click()
n = 0
For i = 6 To 100 Step 2
For j = 3 To i \ 2
If prime(j) Then
If prime(i - j) Then
List1.AddItem i & " =" & j & " +" & i - j
n = n + 1
End If
End If
Next j
Next i
Label1.Caption = " 6和100之间共有" & n & "对素数和"
End Sub