问答题
编程题(26分)
【题目】
编写程序,找出给定范围内所有不是素数的亏数。所谓亏数是指除本身外其所有因子之和小于自身的正整数。例如,106的因子为1、2、53,和为56,故106是亏数。(注意:凡因子和为1的即为素数)
【正确答案】Option Explicit
Option Base 1
Private Sub CmdClear_Click()
Text1.Text = "": Text2.Text = ""
List1.Clear
Text1.SetFocus
End Sub
Private Sub CmdFind_Click()
Dim a As Integer, b As Integer, i As Integer
Dim st As String, flg As Boolean, sum As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
For i = a To b
flg = False: st = "": sum = 0
Call judge(i, flg, st, sum)
If flg Then
List1.AddItem i & ":" & st & "=" & sum
End If
Next i
If List1.ListCount = 9 Then List1.AddItem "指定范围内无亏数"
End Sub
Private Sub judge(n As Integer, fg As Boolean, st As String, sum As Integer)
Dim i As Integer
For i = 1 To n - 1
If n Mod i = 0 Then
sum = sum + i
st = st & i & "+"
End If
Next i
If sum < n And sum <> 1 Then
fg = True
st = Left(st, Len(st) - 1)
End If
End Sub
【答案解析】