vb素数的算法
‘壹’ vb求100以内的素数
代码:
Private Sub Command1_Click()
Me.Cls
Dim yn As Boolean '为真表示是素数
Dim i As Integer, j As Integer, x As Integer
For i = 1 To 100
yn = True '为真表示是素数,否则就不是,先默认为是素数
For j = 2 To i - 1 '素数要大小1,所以循环从2开始,素数不包括本身,所以循环终值减小1
If i Mod j = 0 Then yn = False '如果能整除就不是素数
Next j
If yn = True Then Print i; '如是素数,就在窗体上输出素数
Next i
End Sub
运行效果:
(1)vb素数的算法扩展阅读:
print用法
print(x,y)
等价于
import sys
sys.stdout.write(str(x)+''+str(y)+' ')
从语法上讲,调用python3.0的print函数有如下的形式:
print([object,...][,seq=''][,end=' '][,file=sys.stdout])
seq是在每个对象的文本之间插入一个字符串,如果没有桩底的话,它默认是一个单个空格,传递一个空字符串将会一直分隔符
end是添加在打印文本末尾的一个字符串,如果灭有传递的话,它默认的是一个 换行字符。传递一个控制符串将会避免在打印的文本的末尾移动到下一个输入行-----下一个print将会保持添加到当前输出行的末尾。
file指定了文本将要发送到的文件、标准流或者其他类似文件的对象;如果没有传递的话,它默认的是sys.stdout。带有一个类似文件的write(string)方法的任何对象都可以传递,但真正的文件应该已经为了输出而打开。
‘贰’ vb求素数
Private Function CheckNaturalNum(ByVal iParam As Integer) As Boolean
'质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
'换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。
'1和0既非素数也非合数。
If iParam <= 1 Then
CheckNaturalNum = False
Exit Function
End If
CheckNaturalNum = True
For iCount = 2 To iParam - 1
If iParam Mod iCount = 0 Then
CheckNaturalNum = False
Exit For
End If
Next
End Function
'// 调用示例
MsgBox CheckNaturalNum(Val(InputBox("", "输入1个整数")))
==================================
Public Function CheckNaturalNum(ByVal n As Integer) As Boolean
CheckNaturalNum = False
k = Int(Sqr(n))
For i = 2 To k
If n Mod i = 0 Then
Exit For
End If
Next
If i > k Then
CheckNaturalNum = True
End If
End Function
‘叁’ VB中求素数
'给你来100万个数试一下速度如何,结果在数组中,由于数量太多就不给你打印了,自己理解一下
Option Explicit
Const N As Long = 1000000
Private Sub Command1_Click()
Dim i As Long, j As Long, flag() As Integer, arr() As Long, c As Long, t
ReDim flag(N), arr(N)
t = Timer
For i = 2 To Sqr(N)
If flag(i) = 0 Then
For j = 2 * i To N Step i
flag(j) = 1
Next
End If
Next
For i = 2 To N
If flag(i) = 0 Then
arr(c) = i
c = c + 1
End If
Next
ReDim Preserve arr(c - 1) '存放素数的数组
MsgBox "用时:" & Format(Timer - t, "0.00") & vbNewLine & "个数:" & c
End Sub
‘肆’ vb判断素数
正确程序如下(可以通过比较寻找自己的错误):
Private Sub Command1_Click()
X = Text1.Text
For i = 2 To X - 1
If X Mod i = 0 Then
F = 1
Exit For
End If
Next i
If F = 1 Then
Label2.Caption = "你输入的数是" & X & ",该数不是素数。"
Else
Label2.Caption = "你输入的数是" & X & ",该数是素数。"
End If
End Sub
(4)vb素数的算法扩展阅读:
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。
目前为止,人们未找到一个公式可求出所有质数。
2016年1月,发现世界上迄今为止最大的质数,长达2233万位,如果用普通字号将它打印出来长度将超过65公里。
‘伍’ VB怎样找素数
素数的定义:如果一个数的因数只有1和它自身,那么它就是素数你说找出一个大于或等于该数的第一个素数 那只有素数它本身了 如果还有的话 那它就不是素数了Dim a As Integer, b As Integer, i As Integer
a = InputBox("请输入一个纯数字", "输入")
i = 2
Do While i <= Int(Sqr(a))
If a Mod i = 0 Then Exit Do
i = i + 1
Loop
If i = Int(Sqr(a)) + 1 Then
MsgBox "第一个素数:1 " & vbCrLf & "第二个素数: " & a
Else
MsgBox "非素数"
End If