Pandigital prime: Difference between revisions
Content added Content deleted
(add RPL) |
(Added various BASIC dialects (BASIC256, Gambas and PureBasic). Moved FreeBASIC to section BASIC) |
||
Line 182: | Line 182: | ||
<pre>The largest pandigital prime is: |
<pre>The largest pandigital prime is: |
||
7652413</pre> |
7652413</pre> |
||
=={{header|BASIC}}== |
|||
==={{header|BASIC256}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="qbasic">#include "isprime.kbs" |
|||
digits = 7654321 |
|||
for z = 1 to 0 step -1 |
|||
print "The largest"; z; "..7 pandigital prime is "; |
|||
start = msec |
|||
for n = digits to 0 step -18 |
|||
cadena$ = string(n) |
|||
flag = True |
|||
for i = z to 7 |
|||
if instr(cadena$, string(i)) = 0 then |
|||
flag = False |
|||
exit for |
|||
end if |
|||
next i |
|||
if flag and isPrime(n) then |
|||
print rjust(string(n), 8);". "; (msec - start); " ms" |
|||
exit for |
|||
end if |
|||
next n |
|||
digits = digits * 10 - 9 |
|||
next z</syntaxhighlight> |
|||
==={{header|FreeBASIC}}=== |
|||
{{trans|Ring}} |
|||
<syntaxhighlight lang="freebasic">#include "isprime.bas" |
|||
Dim As Integer digits = 7654321 |
|||
For z As Integer = 1 To 0 Step -1 |
|||
Print "The largest"; z; "..7 pandigital prime is "; |
|||
Dim As Double start = Timer |
|||
For n As Integer = digits To 0 Step -18 |
|||
Dim As String cadena = Str(n) |
|||
Dim As Boolean flag = True |
|||
For i As Integer = z To 7 |
|||
If Instr(cadena, Str(i)) = 0 Then |
|||
flag = False |
|||
Exit For |
|||
End If |
|||
Next i |
|||
If flag And isPrime(n) Then |
|||
Print Using "########. ##.## ms"; n; (Timer - start) * 10000 |
|||
Exit For |
|||
End If |
|||
Next n |
|||
digits = digits * 10 - 9 |
|||
Next z |
|||
Sleep</syntaxhighlight> |
|||
{{out}} |
|||
<pre>The largest 1..7 pandigital prime is 7652413. 6.32 ms |
|||
The largest 0..7 pandigital prime is 76540231. 13.95 ms</pre> |
|||
==={{header|Gambas}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="vbnet">Use "isprime.bas" |
|||
Public Sub Main() |
|||
Dim digits As Integer = 7654321 |
|||
For z As Integer = 1 To 0 Step -1 |
|||
Print "The largest "; z; "..7 pandigital prime is "; |
|||
For n As Integer = digits To 0 Step -18 |
|||
Dim cadena As String = Str(n) |
|||
Dim flag As Boolean = True |
|||
For i As Integer = z To 7 |
|||
If InStr(cadena, Str(i)) = 0 Then |
|||
flag = False |
|||
Break |
|||
End If |
|||
Next |
|||
If flag And isPrime(n) Then |
|||
Print Format$(Str$(n), "########"); ". "; Timer; " ms " |
|||
Break |
|||
End If |
|||
Next |
|||
digits = digits * 10 - 9 |
|||
Next |
|||
End</syntaxhighlight> |
|||
==={{header|PureBasic}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="purebasic">;XIncludeFile "isprime.pb" |
|||
OpenConsole() |
|||
digits.i = 7654321 |
|||
For z.i = 1 To 0 Step -1 |
|||
Print("The largest" + Str(z) + "..7 pandigital prime is ") |
|||
For n.i = digits To 0 Step -18 |
|||
cadena.s = Str(n) |
|||
flag.b = #True |
|||
For i.i = z To 7 |
|||
If FindString(cadena, Str(i)) = 0: |
|||
flag = #False |
|||
Break |
|||
EndIf |
|||
Next i |
|||
If flag And isPrime(n): |
|||
;Print ""; n; " "; (ElapsedMilliseconds() - start) * 10000; " ms" |
|||
PrintN(Str(n) + ". ") |
|||
Break |
|||
EndIf |
|||
Next n |
|||
digits = digits * 10 - 9 |
|||
Next z |
|||
PrintN(#CRLF$ + "Press ENTER to exit"): Input() |
|||
CloseConsole()</syntaxhighlight> |
|||
=={{header|C#|CSharp}}== |
=={{header|C#|CSharp}}== |
||
Line 353: | Line 466: | ||
7652413 |
7652413 |
||
</pre> |
</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|Ring}} |
|||
<syntaxhighlight lang="freebasic">Function isPrime(Byval n As Integer) As Boolean |
|||
If n Mod 3 = 0 Then Return False |
|||
Dim As Integer i = 5 |
|||
While i * i < n |
|||
If n Mod i = 0 Then Return False : End If : i += 2 |
|||
If n Mod i = 0 Then Return False : End If : i += 4 |
|||
Wend |
|||
Return True |
|||
End Function |
|||
Dim As Integer digits = 7654321 |
|||
For z As Integer = 1 To 0 Step -1 |
|||
Print "The largest"; z; "..7 pandigital prime is "; |
|||
Dim As Double start = Timer |
|||
For n As Integer = digits To 0 Step -18 |
|||
Dim As String cadena = Str(n) |
|||
Dim As Boolean flag = True |
|||
For i As Integer = z To 7 |
|||
If Instr(cadena, Str(i)) = 0 Then |
|||
flag = False |
|||
Exit For |
|||
End If |
|||
Next i |
|||
If flag And isPrime(n) Then |
|||
Print Using "########. ##.## ms"; n; (Timer - start) * 10000 |
|||
Exit For |
|||
End If |
|||
Next n |
|||
digits = digits * 10 - 9 |
|||
Next z |
|||
Sleep</syntaxhighlight> |
|||
{{out}} |
|||
<pre>The largest 1..7 pandigital prime is 7652413. 6.32 ms |
|||
The largest 0..7 pandigital prime is 76540231. 13.95 ms</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |