Imports System
Imports System.Collections.Generic
'
' Print the first 100 prime numbers.
'
' The program is structured for clarity:
' - A helper function determines whether a number is prime.
' - A generator function collects primes until reaching the desired count.
' - Comments explain the reasoning behind each step.
'
Module FirstHundredPrimes
'
' Determine whether a number is prime.
'
' The function uses a straightforward and efficient approach:
' - Reject numbers below 2.
' - Only test divisors up to the square root of the number.
' Instead of calling Math.Sqrt repeatedly, we compare i * i <= n
' to avoid unnecessary floating‑point work.
'
Private Function IsPrime(n As Integer) As Boolean
If n < 2 Then
Return False
End If
For i As Integer = 2 To CInt(Math.Floor(Math.Sqrt(n)))
If n Mod i = 0 Then
Return False ' Found a divisor → not prime
End If
Next
Return True ' No divisors found → prime
End Function
'
' Generate a list containing the first `count` prime numbers.
'
' The function increments through natural numbers,
' checks primality, and collects primes until the list is full.
'
Private Function FirstNPrimes(count As Integer) As List(Of Integer)
Dim primes As New List(Of Integer)(capacity:=count)
Dim number As Integer = 2 ' Start from the first prime candidate
While primes.Count < count
If IsPrime(number) Then
primes.Add(number)
End If
number += 1
End While
Return primes
End Function
'
' Compute and print the first 100 prime numbers.
' Each prime is printed on its own line.
'
Sub Main()
Dim primes = FirstNPrimes(100)
For Each p In primes
Console.WriteLine(p)
Next
End Sub
End Module
'
' run:
'
' 2
' 3
' 5
' 7
' 11
' 13
' 17
' 19
' 23
' 29
' 31
' 37
' 41
' 43
' 47
' 53
' 59
' 61
' 67
' 71
' 73
' 79
' 83
' 89
' 97
' 101
' 103
' 107
' 109
' 113
' 127
' 131
' 137
' 139
' 149
' 151
' 157
' 163
' 167
' 173
' 179
' 181
' 191
' 193
' 197
' 199
' 211
' 223
' 227
' 229
' 233
' 239
' 241
' 251
' 257
' 263
' 269
' 271
' 277
' 281
' 283
' 293
' 307
' 311
' 313
' 317
' 331
' 337
' 347
' 349
' 353
' 359
' 367
' 373
' 379
' 383
' 389
' 397
' 401
' 409
' 419
' 421
' 431
' 433
' 439
' 443
' 449
' 457
' 461
' 463
' 467
' 479
' 487
' 491
' 499
' 503
' 509
' 521
' 523
' 541
'