VB:計算1000以內的完數並輸出它們的組合
阿新 • • 發佈:2019-02-15
題目來源:大工慕課 連結
原題: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