首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查质数

如何检查质数
EN

Stack Overflow用户
提问于 2014-02-17 18:44:19
回答 4查看 17.5K关注 0票数 2

下面的代码列出了从1到10的所有质数:

代码语言:javascript
复制
Dim primeN As Integer 
Dim primeI As Integer
Dim primeFlag As Boolean

For primeN = 1 To 10
    primeFlag = True
    For primeI = 2 To primeN / 2
       If primeN Mod primeI = 0 Then
         primeFlag = False
       End If
    Next
    If primeFlag Then
       Console.WriteLine(primeN)
    End If
Next
Console.ReadLine()

如何更改它,使其读取用户输入,然后检查它是否是质数?

EN

回答 4

Stack Overflow用户

发布于 2014-02-17 18:57:32

创建返回true或false标志的函数。

这是我的模块,它生成随机数,然后检查素数:

代码语言:javascript
复制
Module PrimeNumber

    Sub Main()
        Dim numbers As New ArrayList
        For i As Integer = 1 To 20
            numbers.Add(CInt(Math.Ceiling(Rnd() * 1000000)))
        Next

        For Each int As Integer In numbers
            Console.WriteLine("{0} -> {1}", int, PrimeNumberCheck(int))
        Next

    End Sub

    Public Function PrimeNumberCheck(ByVal number As Integer) As Boolean

        Dim primeI As Integer
        Dim primeFlag As Boolean

        primeFlag = True
        For primeI = 2 To number / 2
            If number Mod primeI = 0 Then
                Return False
            End If
        Next

        Return primeFlag

    End Function

End Module

输出:

票数 0
EN

Stack Overflow用户

发布于 2014-02-17 22:34:55

你就快到了。而不是循环,只需获取用户输入并将其放入该变量即可。然后在最后稍微修改一下你的信息。

代码:

代码语言:javascript
复制
Dim primeN As Integer
Dim primeI As Integer
Dim primeFlag As Boolean

primeN = Int32.Parse(Console.ReadLine())

primeFlag = True
For primeI = 2 To primeN / 2
    If primeN Mod primeI = 0 Then
        primeFlag = False
    End If
Next
If primeFlag Then
    Console.WriteLine("Is prime")
Else
    Console.WriteLine("Is not prime")
End If

Console.ReadLine()

正如其他人所建议的那样,将逻辑放在一个方法中将是一个好主意。

票数 0
EN

Stack Overflow用户

发布于 2017-07-03 14:37:07

这是我检查数字是否是质数的最快的VBA代码。

代码语言:javascript
复制
Sub ISPRIME()
Dim number_to_be_checked As Long
Dim c As Long
Dim b As Long
number_to_be_checked = 2000000000 'input value here
c = Round(Sqr(number_to_be_checked)) + 1
If number_to_be_checked = 1 Then
    MsgBox "Not Prime"
Else
    For b = 2 To c
        If number_to_be_checked Mod b = 0 And c <> b Then
            MsgBox "Not Prime. Divisible by " & b
            Exit Sub
        Else
            If b = c Then
                MsgBox "Prime"
                Exit Sub
            End If
        End If
    Next b
End If
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21826904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档