VB:计算1000以内的完数并输出它们的组合

xiaoxiao2021-02-28  45

题目来源:大工慕课 链接 原题: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
转载请注明原文地址: https://www.6miu.com/read-2252891.html

最新回复(0)