RosettaCodeData/Task/Unprimeable-numbers/FreeBASIC/unprimeable-numbers.basic
2023-07-01 13:44:08 -04:00

51 lines
1.2 KiB
Text

Function isprime(n As Ulongint) As boolean
If (n=2) Or (n=3) Then Return 1
If n Mod 2 = 0 Then Return 0
If n Mod 3 = 0 Then Return 0
Dim As Ulongint limit=Sqr(N)+1
For I As Ulongint = 6 To limit Step 6
If N Mod (i-1) = 0 Then Return 0
If N Mod (i+1) = 0 Then Return 0
Next I
Return 1
End Function
Sub getnonprimeables(a() As Long)
Dim As String s,g
Dim As Long count,lim=1300000
Redim a(1 To lim)
For num As Long=1 To lim
g=Str(num)
s=g
For n As Long=0 To Len(s)-1
For m As Long=48 To 57
s[n]=m
If isprime(Vallng(s)) Then Goto lbl
Next m
s=g
Next n
count+=1
a(count)=num
lbl:
Next num
Redim Preserve a(1 To count)
End Sub
Function endings(n As String,a() As Long) As Long
For m As Long=1 To Ubound(a)
If Right(Str(a(m)),1)=n Then Return a(m)
Next m
End Function
Redim As Long n()
getnonprimeables(n())
print " First 35"
For m As Long=1 To 35
Print n(m);
Next
Print
Print "600th number ";n(600)
For z As Long=0 To 9
Print "first umprimable number ending in ";z; " is ";endings(Str(z),n())
Next z
sleep