【问题标题】:How to check for prime numbers如何检查素数
【发布时间】:2014-03-16 14:53:38
【问题描述】:

以下代码列出了从 1 到 10 的所有素数:

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()

我怎样才能改变它,让它读取用户输入,然后检查它是否是质数?

【问题讨论】:

    标签: vb.net primes


    【解决方案1】:

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

    代码:

    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()
    

    就像其他人建议的那样,将逻辑放入方法中是个好主意。

    【讨论】:

      【解决方案2】:

      创建一个返回真或假标志的函数。

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

      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
      

      输出:

      【讨论】:

        【解决方案3】:

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

        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
        

        【讨论】:

          【解决方案4】:
          Sub generateprimenumbersbetween()
          starting_number = 99990 'input value here 
          last_number = 99999 'input value here 
          primenumbers = "" 
          For a = starting_number To last_number 
              For b = 2 To a 
                  If a - b * Int(a / b) = 0 And a <> b Then 
                      Exit For 
                  Else 
                      If a = b Then 
                          primenumbers = primenumbers & " " & a 
                      End If 
                  End If 
              Next b 
          Next a 
          MsgBox primenumbers 
          End Sub 
          
          Function primenumbersbetween(starting_number, last_number) 
          primenumbers = "" 
          For a = starting_number To last_number 
              For b = 2 To a 
                  If a - b * Int(a / b) = 0 And a <> b Then 
                      Exit For 
                  Else 
                      If a = b Then 
                          primenumbers = primenumbers & " " & a 
                      End If 
                  End If 
              Next b 
          Next a 
          primenumbersbetween = primenumbers 
          End Function 
          
          'to check if a number is prime 
          Sub ISPRIME() 
          number_to_be_checked = 102 'input value here 
          For b = 2 To number_to_be_checked 
              If number_to_be_checked - b * Int(number_to_be_checked / b) = 0 And _ 
              number_to_be_checked <> b Then 
                  MsgBox "Not Prime. Divisible by " & b 
                  Exit Sub 
              Else 
                  If number_to_be_checked = b Then 
                      MsgBox "Prime" 
                  End If 
              End If 
          Next b 
          End Sub 
          
          'to check if a number is prime 
          Function ISPRIME2(number_to_be_checked) 
          For b = 2 To number_to_be_checked 
              If number_to_be_checked - b * Int(number_to_be_checked / b) = 0 And _ 
              number_to_be_checked <> b Then 
                  ISPRIME2 = "Not Prime. Divisible by " & b 
                  Exit Function 
              Else 
                  If number_to_be_checked = b Then 
                      ISPRIME2 = "Prime" 
                  End If 
              End If 
          Next b 
          End Function 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-12-18
            • 2012-07-04
            • 1970-01-01
            • 2013-08-02
            • 2018-10-06
            相关资源
            最近更新 更多