求助,vb编程题。设计一个程序,找出100~900之间的无暇素数

如题所述

Option Explicit
Private Sub Command1_Click()
  Dim i As Integer, ImmaculacyPrimeNumber As Integer
  Dim InversionNumber, Counter As Integer
  For i = 100 To 900
    ImmaculacyPrimeNumber = 100 * (i Mod 10) + 10 * (i \ 10 Mod 10) + i \ 100
    If IsPrimeNumber(i) And IsPrimeNumber(ImmaculacyPrimeNumber) Then
      Counter = Counter + 1
      Print i;
      If Counter Mod 10 = 0 Then Print
    End If
  Next i
End Sub

Private Function IsPrimeNumber(ByVal n As Integer) As Boolean
  Dim i As Integer
  IsPrimeNumber = True
  For i = 2 To Sqr(n)
    If n Mod i = 0 Then
      IsPrimeNumber = False
      Exit Function
    End If
  Next i
End Function

我解答的1800多道题,都是原创,没有一道是复制的。

我解答的1800多道题,都是原创,没有一道是复制的!

我解答的1800多道题,都是原创,没有一道是复制的!!

我解答的1800多道题,都是原创,没有一道是复制的!!!

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-07-23
'******************主要程序如下:
dim i as integer
for i=100 to 900
if sushu(i)=true then '调用下方sushu函数
dim dz as integer
dz=diaozhuan(i) ’调用下方dianzhuan函数
if sushu(dz)=true then
textbox1.text=textbox1.text & i & " "
end if
end if
next i
程序没试过,不过应该基本没问题,有问题也是小改一下就行了,基本这个思路。
‘***************************************
Private Function sushu(data1 As integer) as Boolean’该函数判断是不是素数
dim kf as integer
dim sign as Boolean=true
kf=int(sqr(data1)) ’开方取整,作用:比如16,你除以2等于8能够整除,就不用再
‘判断除以8能不能整除了。900开方也就是30次而已,比900小多了。
dim i as integer
for i=2 to kf
if data1 mod i=0 then
sign=false
exit for
end if
next i

Return sign
End Function

Private Function diaozhuan(data1 as integer) as integer '求某数的逆序数,例如123,变成321
dim result1 as string=""
dim astr as string
astr=Cstr(data1)
dim len1 as integer
len1=len(astr)

dim i as integer
for i=len1 to 1 step -1
result1=result1&Mid(astr,i,1)
next i

Return Val(result1)
End Function本回答被网友采纳
相似回答