扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
‘这个是可以选择范围的查找
目前创新互联公司已为上千家的企业提供了网站建设、域名、虚拟空间、网站托管运营、企业网站设计、洛南网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
Public Class Form1
'一个大于1的自然数,除了1和它本身外,不能被整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数
' 章鱼哥 3107073263
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim PD As Boolean = True
TextBox1.Clear() '首先清空文本框,这里面将放置符合条件的素数
If NumericUpDown1.Value NumericUpDown2.Value Then '从小到大
For i = NumericUpDown1.Value To NumericUpDown2.Value '循坏判断所有数
For j = 2 To i - 1 '内循环是除了1和它本身的
If i Mod j = 0 Then '判断是否能被除了1和自身以为的 比自身小的数整除
PD = False '如果能被整除,将PD 设置为False
Exit For '退出里层For 循环
Else
PD = True
End If
Next
If PD Then '如果PD为True ,则为素数
TextBox1.Text = i " "
End If
Next
End If
End Sub
End Class
Module Module1
Sub Main()
Dim sum As Integer = 0
Dim Bound As Integer = 989
Dim num As Integer = 0
Dim cprime As Integer = 0
Do
num += 1
If IsPrame(num) Then
sum += num
cprime = num
End If
Loop Until sum Bound
Console.WriteLine(sum - cprime)
Console.ReadKey()
End Sub
'判断一个数是不是素数
Public Function IsPrame(ByVal num As Integer) As Boolean
If num = 1 Then Return False '素数的定义是大于1
For i = 2 To CType(Int(Math.Sqrt(num)), Integer)
If num Mod i = 0 Then Return False
Next
Return True
End Function
End Module
以下是VB.net自己编的输出N-M范围所有质数的函数,效率很高,1-1000000不到1秒。
VB6.0也可以使用,1.把#Region和括号内的语句都删除
2.把Microsoft.VisualBasic.Right改为Right
3.把Math.Log改为Log
#Region "■ 选质数 | ListPrime"
''' summary
''' 返回整数数组,表示指定自然数区间内的所有质数。
''' /summary
''' param name="头自然数"可选,默认值为1。[Integer类],区间起始的自然数。/param
''' param name="尾自然数"可选,默认值为2。[Integer类],区间结束的自然数,必须大于头自然数。/param
Public Function 选质数(Optional ByVal 头自然数 As Integer = 1, Optional ByVal 尾自然数 As Integer = 2) As Integer()
Dim 质数估计数量 As Integer = Int(尾自然数 * 1.2 / Math.Log(尾自然数))
Dim 质数集合(质数估计数量) As Integer
Dim 序号 As Integer = 0 '已找到质数的个数
Dim 测试数 As Integer
Dim 平方根 As Integer
Dim 测试数增量 As Integer = 4
Dim 尾数 As String
If 尾自然数 头自然数 Then Return Nothing
If 头自然数 6 Then '6以内的质数直接给出
If 头自然数 = 2 Then 质数集合(序号) = 2 : 序号 += 1
If 头自然数 = 3 Then 质数集合(序号) = 3 : 序号 += 1
If 头自然数 = 5 Then 质数集合(序号) = 5 : 序号 += 1
测试数 = 7
Else
测试数 = 头自然数
End If
Do Until 测试数 = 尾自然数
尾数 = Microsoft.VisualBasic.Right(CStr(测试数), 1)
If 尾数 = "5" Then GoTo 跳过 '尾数为5的必然是合数
平方根 = Int(测试数 ^ 0.5)
If 平方根 = 3 Then
For i As Integer = 3 To 平方根 Step 2
If 测试数 Mod i = 0 Then GoTo 跳过
Next
End If
成立:
质数集合(序号) = 测试数
序号 += 1
跳过:
测试数 += 测试数增量
测试数增量 = 6 - 测试数增量 '测试数增量在4和2间变化,只测试6n+1和6n+5
Loop
'按实际找到的质数个数重定义集合
ReDim Preserve 质数集合(序号 - 1)
Return 质数集合
End Function
#End Region
发你邮箱了~查收吧
Dim a(100) As Integer, b()
Private Sub Command1_Click()
For I = 1 To 100
a(I) = Int(Rnd * 1000)
Print a(I);
If I Mod 10 = 0 Then Print
Next
Call xx
Print "素数:"
For I = 1 To UBound(b)
Print b(I);
If I Mod 10 = 0 Then Print
Next
End Sub
Private Sub xx()
Dim I As Integer, N As Integer, j As Integer
For j = 1 To 100
N = a(j)
For I = 2 To N - 1
If N Mod I = 0 Then Exit For
Next
If I = N Then
x = x + 1
ReDim Preserve b(x)
b(x) = a(j)
End If
Next
End Sub
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流