matlab判断m是否为完数,编写一个函数过程:判断一个已知数m是否是完数(完数就是指该数本身等于它各个因子之和,如6=1+2+3,6就是...

匿名用户

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多少,能交流一下吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值