Дано простое число. Составить функцию, которая будет находить следующее за ним простое число - VB
Формулировка задачи:
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число!
Решение задачи: «Дано простое число. Составить функцию, которая будет находить следующее за ним простое число»
textual
Листинг программы
Option Explicit
Private Sub Form_Load()
Dim d#, i&, ll&()
ll = Primes(101)
Do: d = 0
While Not (d > 0 And d < 98): d = Val(InputBox("Введите простое число" & vbLf & "от 1 до 97", , 1)): Wend
For i = 0 To UBound(ll)
If d = ll(i) Then
MsgBox "Простое число: " & d & vbLf & "Следущее: " & ll(i + 1)
End
End If
Next
Loop
End Sub
Function Primes(ByVal max&) As Long()
Dim i&, ii&, n&
If max > 1 Then
ElseIf max = 1 Then
ReDim ll&(0): ll(0) = 1: Primes = ll: Exit Function
Else: Exit Function
End If
ReDim b(max) As Byte, ll&(Fix(max / Log(max) * 2))
n = 1
ll(0) = n: ll(n) = 2
For i = 3 To Fix(Sqr(max)) Step 2
If Not b(i) Then
n = n + 1: ll(n) = i
For ii = i * i To max Step i + i: b(ii) = True: Next
End If
Next i
For i = i To max Step 2
If Not b(i) Then n = n + 1: ll(n) = i
Next i
ReDim Preserve ll&(n): Primes = ll
End Function