注册 登录
编程论坛 VB6论坛

判断一个数是否是自守数(同构数)

ZL张琳 发布于 2016-04-22 09:16, 3528 次点击
菜鸟上路,求助各位大神。
我想问一下,我写的这一个编程哪里不对。我把我觉得不大对的地方标注了一下。我试着运行了下,但是平方后的数超过4位就会出现错误,比如25输进去是对的,但是9376就不对了。
Private Sub Command1_Click()
     Dim x As Long
     x = Val(Text1.Text)
     If verify(x) Then
       Picture1.Print Text1.Text
    Else
         MsgBox Str(x) & "不是自守数。", vbInformation
     End If
End Sub


Private Function verify(x As Long) As Boolean
     Dim y As Long, s As Integer, z As String
     verify = False
     y = x * x
    s = y Mod 100
     If x = Val(Right(CStr(y), s)) Then
         verify = True
    End If
End Function


Private Sub Command2_Click()
    Text1 = ""
End Sub

Private Sub Command3_Click()
    End
End Sub
请大家帮帮忙啦,万分感谢!!
2 回复
#2
xiangyue05102016-04-22 09:33
就是你标注的那个位置我看不明白。
根据百度上的定义“正整数n若是它平方数的尾部,则称n为同构数”。 s = y Mod 100只是求余的。
严格按照定义去判断就可以了
Private Function verify(x As Long) As Boolean
     Dim y As String, s as string ,i as integer
     verify = False
     s=cstr(x)
     i=len(s)
     y = Cstr(x * x)
     If right(y,i)=s Then verify = true
End Function
#3
ZL张琳2016-04-22 22:59
回复 2楼 xiangyue0510
对了也!!!万分感谢!!
1