How to check for prime numbers

送分小仙女□ 提交于 2019-12-10 23:35:46

问题


The following code lists all prime numbers from 1 to 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()

How can I change it so that it reads the user input and then checks if it's a prime number?


回答1:


You're almost there. Instead of a loop, just get the user input and put it in that variable. Then change your message at the end a bit.

Code:

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

Like others have suggested, putting the logic in a method would be a good idea.




回答2:


Create a function that returns a true or false flag.

Here's my module that generates random numbers then checks for primality:

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

Output:




回答3:


This is my fastest VBA code to check if a number is a prime number.

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 


来源:https://stackoverflow.com/questions/21826904/how-to-check-for-prime-numbers

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!