匿名用户
1级
2011-05-20 回答
老实说,我不懂什么是完数,但如果28算是完数的话,那我写的这段代码就可以用。
从1循环到10000,返回
6=1+2+3
6是完数
28=1+2+14+4+7
28是完数
496=1+2+248+4+124+8+62+16+31
496是完数
8128=1+2+4064+4+2032+8+1016+16+508+32+254+64+127
8128是完数
我是Text1 Text2 来输入输出的,你自己按你要求改下吧。
Private Sub Command3_Click()
Dim a, b, x, y, z As Double, m, n, ss As String
a = Text1.Text
b = 0: m = "1": z = 1
For x = 2 To a - 1
If a Mod x = 0 And a <> x Then
b = 1: y = a / x
If y > x Then n = x & "+" & y Else n = y & "+" & x '待判断是否重复后写入
If InStr(m & "+", "+" & n & "+") = 0 Then
m = m & "+" & n: z = z + x + y
End If
End If
Next
If a = 1 Then
ss = ss & "1不是素数也不是合数" & vbCrLf
ElseIf b = 1 Then
If a = z Then
ss = ss & a & "=" & m & vbCrLf
ss = ss & a & "是完数" & vbCrLf
Else
ss = ss & a & "不是完数" & vbCrLf
End If
Else
ss = ss & a & "是素数" & vbCrLf
End If
Text2.Text = ss
End Sub
追问:
你的QQ多少,能交流一下吗