问答题 编程题(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
【答案解析】