题目来源:大工慕课 链接 原题:Visual Basic程序设计教程(第二版)龚沛曾主编,高等教育出版社 实验6-6 作者:Caleb Sung
题目要求
如果一个整数的所有因子(包括1,但不包括本身)之和与该数相等,则称这个数为完数。例如6=1+2+3,所以6是一个完数。编写一个函数IsWs(m)判断m是否为完数,函数的返回值是逻辑型。主调程序显示1000以内的完数,如图所示。
提示
判断一个数m是否是完数,算法思想是:将m依次除以1~m/2,如果能整除,就是m的一个因子,进行累积;循环结束,若m与累加因子之和相等,m就是完数。
参考代码
这里我偷了个懒没画list,大家可以参照我的改一下
全局定义
Dim a
%()
响应点击主窗体
Private Sub Form_Click()
Print
"1000以内的完数为:"
For i =
1 To 1000
If IsWs(i)
Then
Print i;
"=1";
For j =
1 To UBound(a)
Print
"+"; a(j);
Next j
Print
End If
Next i
End Sub
计算函数:IsWs()
Function IsWs(m)
As Boolean
Dim s%
s =
0
For i =
1 To m \
2
If m
Mod i =
0 Then
ReDim Preserve a(j)
a(j) = i
j = j +
1
s = s + i
End If
Next i
If m = s
Then IsWs =
True
End Function