RosettaCodeData/Task/Jacobsthal-numbers/FreeBASIC/jacobsthal-numbers.basic

52 lines
1.2 KiB
Plaintext

Function isPrime(n As Ulongint) As Boolean
If n < 2 Then Return False
If n Mod 2 = 0 Then Return false
For i As Uinteger = 3 To Int(Sqr(n))+1 Step 2
If n Mod i = 0 Then Return false
Next i
Return true
End Function
Dim Shared As Uinteger n(1)
Dim Shared As Uinteger i0 = 0, i1 = 1
Dim Shared As Integer j, c, P = 1, Q = -2
Print "First 30 Jacobsthal numbers:"
c = 0 : n(i0) = 0: n(i1) = 1
For j = 0 To 29
c += 1
Print Using " #########"; n(i0);
Print Iif (c Mod 5, "", !"\n");
n(i0) = P * n(i1) - Q * n(i0)
Swap i0, i1
Next j
Print !"\n\nFirst 30 Jacobsthal-Lucas numbers: "
c = 0 : n(i0) = 2: n(i1) = 1
For j = 0 To 29
c += 1
Print Using " #########"; n(i0);
Print Iif (c Mod 5, "", !"\n");
n(i0) = P * n(i1) - Q * n(i0)
Swap i0, i1
Next j
Print !"\n\nFirst 20 Jacobsthal oblong numbers: "
c = 0 : n(i0) = 0: n(i1) = 1
For j = 0 To 19
c += 1
Print Using " ###########"; n(i0)*n(i1);
Print Iif (c Mod 5, "", !"\n");
n(i0) = P * n(i1) - Q * n(i0)
Swap i0, i1
Next j
Print !"\n\nFirst 10 Jacobsthal primes: "
c = 0 : n(i0) = 0: n(i1) = 1
Do
If isPrime(n(i0)) Then c += 1 : Print n(i0)
n(i0) = P * n(i1) - Q * n(i0)
Swap i0, i1
Loop Until c = 10
Sleep