1. 程式人生 > >VB:計算1000以內的完數並輸出它們的組合

VB:計算1000以內的完數並輸出它們的組合

題目來源:大工慕課 連結
原題: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