VB 求10000-99999之间的全部回文式素数

霸者孤独2022-10-04 11:39:541条回答

VB 求10000-99999之间的全部回文式素数
我写的程序如下,始终显示ByRef的参数类型错误,
Private Function fact(n%) As Boolean
Dim s%
fact = True
For s = 2 To n - 1
If n Mod i = 0 Then
fact = False
Exit For
End If
Next i
End Function
Private Function hws(n%) As Boolean
Dim data%,ten%,thu%,wan%
data = n Mod 10
ten = (n 10) Mod 10
thu = (n 1000) Mod 10
wan = n 10000
If data = wan And ten = thu Then
hws = True
End If
End Function
Private Sub Command1_Click()
Dim ,k%
For i = 10000 To 99999
If fact(i) = True And hws(i) = True Then
k = k + 1
Print i;
If k Mod 7 = 0 Then
Print
End If
End If
Next i
End Sub

已提交,审核后显示!提交回复

共1条回复
yangzihu 共回答了18个问题 | 采纳率77.8%
Private Function fact(n&) As Boolean '错误1:参数n的数据类型应该与command1_click事件里的i类型一致
Dim s& '错误2:s的类型也应该是长整型(&),你原来定义为整形(%)或导致溢出
fact = True
For s = 2 To Sqr(n) '这里循环至sqr(n)即可,可以大大提高代码执行速度,你可以比较一下
If n Mod s = 0 Then '这里i应该改为s,别用i习惯了
fact = False
Exit For
End If
Next s '同样i改成s
End Function
Private Function hws(n&) As Boolean '这里一样n应该定义为长整型,你原来定位为%会导致提示类型不符和溢出
If CStr(n) = StrReverse(CStr(n)) Then hws = True '这里用VB自带的StrReverse函数判断最简单
'StrReverse函数的功能是把字符串前后反转,例如StrReverse("ABCD")为DCBA
End Function
Private Sub Command1_Click()
Dim i&, k% '这里的i你原来定义为单精度型!,建议定义为长整形&,同上上边2个函数的变量n类型应一致
For i = 10000 To 99999
If fact(i) = True And hws(i) = True Then
k = k + 1
Print i;
If k Mod 7 = 0 Then
Print
End If
End If
Next i
End Su
1年前

相关推荐

VB 求10000-99999之间的全部回文式素数
VB 求10000-99999之间的全部回文式素数
我写的程序如下,始终显示ByRef的参数类型错误,
Private Function fact(n%) As Boolean
Dim s%
fact = True
For s = 2 To n - 1
If n Mod i = 0 Then
fact = False
Exit For
End If
Next i
End Function
Private Function hws(n%) As Boolean
Dim data%,ten%,thu%,wan%
data = n Mod 10
ten = (n 10) Mod 10
thu = (n 1000) Mod 10
wan = n 10000
If data = wan And ten = thu Then
hws = True
End If
End Function
Private Sub Command1_Click()
Dim ,k%
For i = 10000 To 99999
If fact(i) = True And hws(i) = True Then
k = k + 1
Print i;
If k Mod 7 = 0 Then
Print
End If
End If
Next i
End Sub
神风幻影1年前1
吃草的火车 共回答了24个问题 | 采纳率79.2%
integer % 短整型
long & 长整型
single !单精度浮点型
double # 双精度浮点型
currency @ 货币型
string $ 字符型
你的程序
Private Sub Command1_Click()
Dim i!,k%
If fact(i) = True And hws(i) = True Then
和这个地方
Private Function fact(n%) As Boolean
的传值有问题,不是同一种数据类型
某城市车牌是从10000-99999的连续编号,在这九万个牌照中至少出现一个数字9,各位数字之和是9得倍数的有几个
winsafe1年前1
hw2192 共回答了21个问题 | 采纳率95.2%
易得,其中可被九整除的数共有10000个,以下考虑这10000中不含数字九的个数
设牌照为abcde,a+b+c+d被9除余数是t,则只需取e=9-t(t=0 e=0)即可 于是a可取1-8
b,c,d可取0-8,当abcd确定后 e也确定了 故不含数字九的有8*9*9*9=5832个
即所求有10000-5832=4168个