vb考题:用调用函数验证"哥德巴赫猜想",一定要用调用函数
答案:1 悬赏:50 手机版
解决时间 2021-04-15 15:17
- 提问者网友:不爱我么
- 2021-04-15 04:53
vb考题:用调用函数验证"哥德巴赫猜想",一定要用调用函数
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-04-15 06:17
Private Sub Command1_Click()
Dim str1 As String, lng1 As Long, I As Long, k As Integer
redo:
str1 = InputBox("输入一个大于6的偶数", "输入", 1000)
If IsNumeric(str1) Then
lng1 = Val(str1)
If lng1 <= 6 Or lng1 Mod 2 <> 0 Then
MsgBox str1 & " 不是大于6的偶数!重新输入。"
GoTo redo
End If
Else
MsgBox str1 & " 不是大于6的偶数!重新输入。"
GoTo redo
End If
If IsPrime(lng1 - 2) Then '2单独考虑
k = k + 1
Debug.Print "第"; k; "组", 2 & "+"; lng1 - I & "=" & lng1
End If
For I = 3 To lng1 / 2 Step 2
If IsPrime(I) And IsPrime(lng1 - I) Then
k = k + 1
Debug.Print "第"; k; "组", I & "+"; lng1 - I & "=" & lng1
End If
Next I
End Sub
Function IsPrime(lngNum As Long) As Boolean '判断是否是素数,是返回TRUE,否返回FALSE
Dim I As Long
If lngNum < 2 Then
IsPrime = False
ElseIf lngNum = 2 Then
IsPrime = True '把2剔除,可以节约40%时间
Else
For I = 3 To Sqr(lngNum) Step 2
If lngNum Mod I = 0 Then IsPrime = False: Exit For
Next I
If I > Sqr(lngNum) Then IsPrime = True
End If
End Function
Dim str1 As String, lng1 As Long, I As Long, k As Integer
redo:
str1 = InputBox("输入一个大于6的偶数", "输入", 1000)
If IsNumeric(str1) Then
lng1 = Val(str1)
If lng1 <= 6 Or lng1 Mod 2 <> 0 Then
MsgBox str1 & " 不是大于6的偶数!重新输入。"
GoTo redo
End If
Else
MsgBox str1 & " 不是大于6的偶数!重新输入。"
GoTo redo
End If
If IsPrime(lng1 - 2) Then '2单独考虑
k = k + 1
Debug.Print "第"; k; "组", 2 & "+"; lng1 - I & "=" & lng1
End If
For I = 3 To lng1 / 2 Step 2
If IsPrime(I) And IsPrime(lng1 - I) Then
k = k + 1
Debug.Print "第"; k; "组", I & "+"; lng1 - I & "=" & lng1
End If
Next I
End Sub
Function IsPrime(lngNum As Long) As Boolean '判断是否是素数,是返回TRUE,否返回FALSE
Dim I As Long
If lngNum < 2 Then
IsPrime = False
ElseIf lngNum = 2 Then
IsPrime = True '把2剔除,可以节约40%时间
Else
For I = 3 To Sqr(lngNum) Step 2
If lngNum Mod I = 0 Then IsPrime = False: Exit For
Next I
If I > Sqr(lngNum) Then IsPrime = True
End If
End Function
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯