Option Explicit Option Base 1 'Adott számú (Mennyit), véletlen, a [Tol, Ig] intervallumba eső 'egész szám generálása egy tömbbe (Mibe), adott Seed érték mellett Sub Szamokat_General(Mibe() As Integer, Mennyit As Integer, _ Tol As Integer, Ig As Integer, Seed As Integer) Dim i As Integer, db As Integer Rnd -1 Randomize Seed db = Ig - Tol + 1 For i = 1 To Mennyit Mibe(i) = Int(Rnd * db) + Tol Next End Sub 'Adott hosszú, véletlenszerű szöveges adat (sztring) generálása 'betűkből, számjegyekből és egyéb karakterekből Function Szoveget_General(Hossz As Integer, Seed As Integer) As String Const Kisbetuk = "aábcdeéfghiíjklmnoóöőpqrstuúüűvwxyz" Const Szamjegyek = "0123456789" Const Egyeb = "'!%$=<>()\/[]#&@{}<,;:.?+-_ " Dim i As Integer, db As Integer, Karakterek As String, st As String Rnd -1 Randomize Seed Karakterek = Kisbetuk + UCase(Kisbetuk) + Szamjegyek + Egyeb db = Len(Karakterek) st = "" For i = 1 To Hossz st = st + Mid(Karakterek, Int(Rnd * db) + 1, 1) Next Szoveget_General = st End Function 'Prímszámvizsgálat Function Prim(ByVal a As Long) As Boolean Dim o As Long, b As Long, van As Boolean If a <= 1 Then Prim = False Else o = 2: van = False: b = Int(Sqr(a)) While o <= b And Not van If a Mod o = 0 Then van = True Else o = o + 1 End If Wend Prim = Not van End If End Function 'Relatívprím-vizsgálat Function RelPrim(ByVal a As Long, ByVal b As Long) As Boolean Dim o As Long, c As Long, van As Boolean If a <= b Then c = a Else c = b o = 2: van = False While o <= c And Not van If a Mod o = 0 And b Mod o = 0 Then van = True Else o = o + 1 End If Wend RelPrim = Not van End Function 'Egy személyi szám ellenőrzése Function SzemSzamEll(ByVal sz As String) As Boolean Const n = 11 Dim i As Integer, o As Integer, o1 As Integer, o2 As Integer, ell As Integer Dim ok As Boolean, uj As Boolean, regi As Boolean, st As String ok = True 'Hossz If Len(sz) <> n Then ok = False Else 'Számjegyek i = 1 While i <= n And ok If Not (Mid(sz, i, 1) >= "0" And Mid(sz, i, 1) <= "9") Then ok = False End If i = i + 1 Wend If ok Then 'Első jegy If Not (Left(sz, 1) >= "1" And Left(sz, 1) <= "8") Then ok = False Else 'Dátumrész st = Mid(sz, 2, 2) + "." + Mid(sz, 4, 2) + "." + Mid(sz, 6, 2) If Not IsDate(st) Then ok = False Else 'Utolsó jegy o1 = 0: o2 = 0 For i = 1 To n - 1 o1 = o1 + i * Val(Mid(sz, i, 1)) o2 = o2 + (n - i) * Val(Mid(sz, i, 1)) Next o1 = o1 Mod n: o2 = o2 Mod n st = Mid(sz, 2, 6) 'Melyik fajta (új és/vagy régi) számolás kell Select Case Left(sz, 1) Case "1", "2", "5", "6" If st >= "970101" And st <= "991231" Then uj = True: regi = False Else uj = False: regi = True End If Case "7", "8" uj = False: regi = True Case "3", "4" uj = True: regi = True End Select o = Val(Right(sz, 1)) If regi And uj Then If Not (o1 = o Or o2 = o) Then ok = False End If Else If regi And o1 <> o Or uj And o2 <> o Then ok = False End If End If End If End If End If End If SzemSzamEll = ok End Function