注册 登录
编程论坛 VB6论坛

把一个大于2的偶数分解为两个素数,怎么填代码?

白掌七里香 发布于 2018-10-22 08:58, 2446 次点击
把一个大于2的偶数分解为两个素数,text1中写入这个偶数,label1和label3中填入两个素数,要求其中一个素数是所能够分解出的最小的素数(一个偶数有时可以分解为多种素数的组合,例如24可以分解为5和19,也可以分解为11和13,要求取含有最小素数的组合)。程序中有6个填空,第四个填空填不出来,请指教!
Private Sub Command1_Click()
Dim a&, f1 As Boolean, f2 As Boolean
a = Val(Text1.Text) '①
For i = 2 To a

    f1 = True
   For j = 2 To i - 1
     If i Mod j = 0 Then f1 = False
   Next j
   
   If f1 Then
     b = a - i '②
     
     f2 = True
     For j = 2 To b - 1
       If b Mod j = 0 Then f2 = False '③
     Next j
     
     If f2 Then
     '④
      Label3.Caption = b
      Label1.Caption = i  '⑤
     End If
   End If '⑥
Next i
End Sub
4 回复
#2
yingshu2018-10-22 10:32
现有的程序中没有判断最小素数,所以在每次取得新组合后  
      Label3.Caption = b
      Label1.Caption = i  '⑤这个赋值函数都有重新赋值

Private Sub Command1_Click()
Dim a&, f1 As Boolean, f2 As Boolean
Dim temp1 As Long
Dim temp2 As Long
a = Val(Text1.Text) '①
temp1 = a
temp2 = a

For i = 2 To a - 2

    f1 = True
   For j = 2 To i - 1
     If i Mod j = 0 Then f1 = False
   Next j
   
   If f1 Then
     b = a - i '②
     
     f2 = True
     For j = 2 To b - 1
       If b Mod j = 0 Then f2 = False '③
     Next j
     
     If f2 Then
     If (Val(i) < Val(temp1) And Val(i) < Val(temp2)) Or (Val(b) < Val(temp1) And Val(b) < Val(temp2))  Then
     '④
        temp1 = i
        temp2 = b
      Label2.Caption = temp1
      Label1.Caption = temp2  '⑤
    End If
     End If
   End If '⑥
Next i
End Sub
欧拉  妥妥滴
知识有限,仅供参考,希望对你有帮助

[此贴子已经被作者于2018-10-22 12:47编辑过]

#3
白掌七里香2018-10-22 13:42
上面的程序自己不能添加代码的,就填空
#4
白掌七里香2018-10-22 14:17
谢谢,已经想到答案了,
If f2 Then
     Label1.Caption = i   '④
      Label3.Caption = b
       exit for   '⑤
     End If
   End If  '⑥
#5
yingshu2018-10-22 14:25
牛逼,受教了
1