Pierpont primes: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Perl 6}}: Rearrange a bit, move stuff out of the hot loop, cut runtime by ~40%) |
|||
Line 167: | Line 167: | ||
=={{header|Julia}}== |
=={{header|Julia}}== |
||
The generator method is very fast but does not guarantee the primes are generated in order. Therefore we generate |
The generator method is very fast but does not guarantee the primes are generated in order. Therefore we generate two times the primes needed and then sort and return the lower half. |
||
<lang julia>using Primes |
<lang julia>using Primes |
||
function pierponts(N, firstkind = true) |
function pierponts(N, firstkind = true) |
||
ret, incdec = BigInt[], firstkind ? 1 : -1 |
|||
for k2 in 0: |
for k2 in 0:10000, k3 in 0:k2, switch in false:true |
||
i, j = switch ? (k3, k2) : (k2, k3) |
i, j = switch ? (k3, k2) : (k2, k3) |
||
n = BigInt(2)^i * BigInt(3)^j + incdec |
n = BigInt(2)^i * BigInt(3)^j + incdec |
||
if |
if isprime(n) && !(n in ret) |
||
push!(ret, n) |
push!(ret, n) |
||
if length(ret) == N * |
if length(ret) == N * 2 |
||
return sort(ret)[1:N] |
return sort(ret)[1:N] |
||
end |
end |
||
end |
end |
||
end |
end |
||
throw("Failed to find $N primes") |
throw("Failed to find $(N * 2) primes") |
||
end |
end |
||
println("The first 50 Pierpont primes (first kind) are: ", pierponts(50)) |
println("The first 50 Pierpont primes (first kind) are: ", pierponts(50)) |
||
Line 193: | Line 192: | ||
println("\nThe 250th Pierpont prime (second kind) is: ", pierponts(250, false)[250]) |
println("\nThe 250th Pierpont prime (second kind) is: ", pierponts(250, false)[250]) |
||
println("\nThe 1000th Pierpont prime (first kind) is: ", pierponts(1000)[1000]) |
|||
println("\nThe 1000th Pierpont prime (second kind) is: ", pierponts(1000, false)[1000]) |
|||
println("\nThe 2000th Pierpont prime (first kind) is: ", pierponts(2000)[2000]) |
|||
println("\nThe 2000th Pierpont prime (second kind) is: ", pierponts(2000, false)[2000]) |
|||
</lang>{{out}} |
</lang>{{out}} |
||
<pre> |
<pre> |
||
Line 202: | Line 209: | ||
The 250th Pierpont prime (second kind) is: 4111131172000956525894875083702271 |
The 250th Pierpont prime (second kind) is: 4111131172000956525894875083702271 |
||
The 1000th Pierpont prime (first kind) is: 69269314716439690250482558089997110961545818230232043107188537422260188701607997086273960899938499201024414931399264696270849 |
|||
The 1000th Pierpont prime (second kind) is: 1308088756227965581249669045506775407896673213729433892383353027814827286537163695213418982500477392209371001259166465228280492460735463423 |
|||
The 2000th Pierpont prime (first kind) is: 23647056334818750458979408107288138983957799805326855934519920502493109431728722178351835778368596067773810122477389192659352731519830867553659739507195398662712180250483714053474639899675114018023738461139103130959712720686117399642823861502738433 |
|||
The 2000th Pierpont prime (second kind) is: 1702224134662426018061116932011222570937093650174807121918750428723338890211147039320296240754205680537318845776107057915956535566573559841027244444877454493022783449689509569107393738917120492483994302725479684822283929715327187974256253064796234576415398735760543848603844607 |
|||
</pre> |
</pre> |
||