Pandigital prime: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: optimized the (DO K loop) search.)
Line 315: Line 315:
<lang julia>using Primes
<lang julia>using Primes



function pandigitals(N)
function pandigitals(firstdig, lastdig)
mask = primesmask(10^N)
mask = primesmask(10^(lastdig - firstdig + 1))
ret = Int[]
for j in N:-1:1, i in 10^j:-1:10^(j-1)
for j in lastdig:-1:firstdig
if mask[i]
n = j - firstdig + 1
for i in evalpoly(10, firstdig:j):-1:evalpoly(10, j:-1:firstdig)
d = digits(i)
if length(d) == j && all(x -> count(y -> y == x, d) == 1, 1:j)
if mask[i]
push!(ret, 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 ret
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]
d = digits(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}}==