Pandigital prime: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: optimized the (DO K loop) search.) |
m (→{{header|Julia}}: add 0) |
||
Line 315: | Line 315: | ||
<lang julia>using Primes |
<lang julia>using Primes |
||
function pandigitals( |
function pandigitals(firstdig, lastdig) |
||
mask = primesmask(10^ |
mask = primesmask(10^(lastdig - firstdig + 1)) |
||
ret = Int[] |
|||
for j in |
for j in lastdig:-1:firstdig |
||
n = j - firstdig + 1 |
|||
for i in evalpoly(10, firstdig:j):-1:evalpoly(10, j:-1:firstdig) |
|||
⚫ | |||
if |
if mask[i] |
||
d = digits(i) |
|||
if length(d) == n && all(x -> count(y -> y == x, d) == 1, firstdig:j) |
|||
return i |
|||
end |
|||
end |
end |
||
end |
end |
||
end |
end |
||
return |
return 0 |
||
end |
end |
||
for firstdigit in [1, 0] |
|||
println("The largest prime containing numerals 1 through n of length n is ", maximum(pandigitals(9))) |
|||
println("Max pandigital prime over [$firstdigit, 9] is ", pandigitals(firstdigit, 9)) |
|||
</lang>{{out}}<pre>The largest prime containing numerals 1 through n of length n is 7652413</pre> |
|||
end |
|||
</lang>{{out}} |
|||
<pre> |
|||
function pandigitals(firstdig, lastdig) |
|||
mask = primesmask(10^(lastdig - firstdig + 1)) |
|||
for j in lastdig:-1:firstdig |
|||
n = j - firstdig + 1 |
|||
for i in evalpoly(10, firstdig:j):-1:evalpoly(10, j:-1:firstdig) |
|||
if mask[i] |
|||
⚫ | |||
if length(d) == n && all(x -> count(y -> y == x, d) == 1, firstdig:j) |
|||
return i |
|||
end |
|||
end |
|||
end |
|||
end |
|||
return 0 |
|||
end |
|||
for firstdigit in [1, 0] |
|||
println("Max pandigital prime over [$firstdigit, 9] is ", pandigitals(firstdigit, 9)) |
|||
end |
|||
<pre> |
|||
Max pandigital prime over [1, 9] is 7652413 |
|||
Max pandigital prime over [0, 9] is 76540231 |
|||
</pre> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |