Find largest left truncatable prime in a given base: Difference between revisions
Content deleted Content added
Added Java implementation |
Added BBC BASIC |
||
Line 12: | Line 12: | ||
Related Tasks: |
Related Tasks: |
||
* [[Miller-Rabin primality test]] |
* [[Miller-Rabin primality test]] |
||
=={{header|BBC BASIC}}== |
|||
{{works with|BBC BASIC for Windows}} |
|||
Uses the '''H'''uge '''I'''nteger '''M'''ath & '''E'''ncryption library from http://devotechs.com/ |
|||
<lang bbcbasic> HIMEM = PAGE + 3000000 |
|||
INSTALL @lib$+"HIMELIB" |
|||
PROC_himeinit("HIMEkey") |
|||
DIM old$(20000), new$(20000) |
|||
h1% = 1 : h2% = 2 : h3% = 3 : h4% = 4 |
|||
FOR base% = 3 TO 17 |
|||
PRINT "Base "; base% " : " FN_largest_left_truncated_prime(base%) |
|||
NEXT |
|||
END |
|||
DEF FN_largest_left_truncated_prime(base%) |
|||
LOCAL digit%, i%, new%, old%, prime%, fast%, slow% |
|||
fast% = 1 : slow% = 50 |
|||
old$() = "" |
|||
PROC_hiputdec(1, STR$(base%)) |
|||
PROC_hiputdec(2, "1") |
|||
REPEAT |
|||
new% = 0 : new$() = "" |
|||
PROC_hiputdec(3, "0") |
|||
FOR digit% = 1 TO base%-1 |
|||
SYS `hi_Add`, ^h2%, ^h3%, ^h3% |
|||
FOR i% = 0 TO old%-1 |
|||
PROC_hiputdec(4, old$(i%)) |
|||
SYS `hi_Add`, ^h3%, ^h4%, ^h4% |
|||
IF old% OR digit% > 1 THEN |
|||
IF old% > 100 THEN |
|||
SYS `hi_IsPrime_RB`, ^fast%, ^h4% TO prime% |
|||
ELSE |
|||
SYS `hi_IsPrime_RB`, ^slow%, ^h4% TO prime% |
|||
ENDIF |
|||
IF prime% THEN new$(new%) = FN_higetdec(4) : new% += 1 |
|||
ENDIF |
|||
NEXT |
|||
NEXT |
|||
SYS `hi_Mul`, ^h1%, ^h2%, ^h2% |
|||
SWAP old$(), new$() |
|||
SWAP old%, new% |
|||
UNTIL old% = 0 |
|||
= new$(new%-1)</lang> |
|||
'''Output:''' |
|||
<pre> |
|||
Base 3 : 23 |
|||
Base 4 : 4091 |
|||
Base 5 : 7817 |
|||
Base 6 : 4836525320399 |
|||
Base 7 : 817337 |
|||
Base 8 : 14005650767869 |
|||
Base 9 : 1676456897 |
|||
Base 10 : 357686312646216567629137 |
|||
Base 11 : 2276005673 |
|||
Base 12 : 13092430647736190817303130065827539 |
|||
Base 13 : 812751503 |
|||
Base 14 : 615419590422100474355767356763 |
|||
Base 15 : 34068645705927662447286191 |
|||
Base 16 : 1088303707153521644968345559987 |
|||
Base 17 : 13563641583101 |
|||
</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |