Data Analysis Mathematics Linear Algebra Statistics
New Version 7.0!  QuickStart Samples

# Prime Numbers QuickStart Sample (Visual Basic)

Illustrates working with prime numbers and the IntegerMath class in the Extreme.Mathematics namespace in Visual Basic.

```Option Infer On

' We use classes from the Extreme.Mathematics.SpecialFunctions
' namespace.
Imports Extreme.Mathematics

Namespace Extreme.Numerics.QuickStart.VB
' Illustrates working with prime numbers using the
' IntegerMath class in the Extreme.Mathematics.SpecialFunctions
' namespace of the Extreme Optimization Mathematics
' Library for .NET.
Sub Main()
'
' Factoring numbers
'

' The Factorize method returns an array containing the prime factors:
Dim index As Int32
Dim n As Int32 = 1001110110
Dim factors As Int32() = IntegerMath.Factorize(n)

Console.Write("{0} = {1}", n, factors(0))
For index = 1 To factors.Length - 1
Console.Write(" * {0}", factors(index))
Next
Console.WriteLine()

' Factors that occur multiple times is repeated as many times as necessary:
n = 256 * 6157413
factors = IntegerMath.Factorize(n)
Console.Write("{0} = {1}", n, factors(0))
For index = 1 To factors.Length - 1
Console.Write(" * {0}", factors(index))
Next
Console.WriteLine()

' The 64bit version can safely factor numbers up to 48 bits long:
Dim n2 As Int64 = 1296523 * 1177157L
Dim factors2 As Int64() = IntegerMath.Factorize(n2)
Console.Write("{0} = {1}", n2, factors2(0))
For index = 1 To factors2.Length - 1
Console.Write(" * {0}", factors2(index))
Next
Console.WriteLine()

' Let's try a longer number
n2 = 4292017459171704241
factors2 = IntegerMath.Factorize(n2)
Console.Write("{0} = {1}", n2, factors2(0))
For index = 1 To factors2.Length - 1
Console.Write(" * {0}", factors2(index))
Next
Console.WriteLine()

'
' Prime numbers
'

' The IsPrime method verifies if a number is prime or not.
n = 801853937
Console.WriteLine("{0} is prime? {1}!", n, IntegerMath.IsPrime(n))
n = 801853939
Console.WriteLine("{0} is prime? {1}!", n, IntegerMath.IsPrime(n))

' MextPrime gets the first prime after a specified number.
' You can call it repeatedly to get successive primes.
' Let's get the 10 smallest primes larger than one billion:
Console.WriteLine("First 10 primes greater than 1 billion:")
n = 1000000000
For index = 1 To 10
n = IntegerMath.NextPrime(n)
Console.Write("{0,16}", n)
Next
Console.WriteLine()

' PreviousPrime gets the last prime before a specified number.
Console.WriteLine("Last 10 primes less than 1 billion:")
n = 1000000000
For index = 1 To 10
n = IntegerMath.PreviousPrime(n)
Console.Write("{0,16}", n)
Next
Console.WriteLine()

Console.Write("Press Enter key to exit...")