Factorial primes: Difference between revisions

Content added Content deleted
(Upgraded to 'full' task.)
(→‎OCaml: add)
Line 28: Line 28:
* [[Sequence_of_primorial_primes|Sequence of primorial primes]]
* [[Sequence_of_primorial_primes|Sequence of primorial primes]]
<br><br>
<br><br>

=={{header|ALGOL 68}}==
=={{header|ALGOL 68}}==
Basic task. Assumes LONG INT is at least 64 bits.
Basic task. Assumes LONG INT is at least 64 bits.
Line 197: Line 198:
31: 546!-1 -> 14130200926141832545..99999999999999999999 [1260 digits]
31: 546!-1 -> 14130200926141832545..99999999999999999999 [1260 digits]
</pre>
</pre>

=={{header|J}}==
=={{header|J}}==
<syntaxhighlight lang="j"> (,. (-!)/"1)1>.(,. >.@(!inv)@<:) (#~ 1 p: ]) ~.,(!i.27x)+/1 _1
<syntaxhighlight lang="j"> (,. (-!)/"1)1>.(,. >.@(!inv)@<:) (#~ 1 p: ]) ~.,(!i.27x)+/1 _1
Line 213: Line 215:


=={{header|Java}}==
=={{header|Java}}==

[[User:Sjharper79|Sjharper79]] ([[User talk:Sjharper79|talk]])
[[User:Sjharper79|Sjharper79]] ([[User talk:Sjharper79|talk]])


Line 552: Line 553:
9: 12! - 1 = 479001599
9: 12! - 1 = 479001599
10: 14! - 1 = 87178291199
10: 14! - 1 = 87178291199
</pre>

=={{header|OCaml}}==
<syntaxhighlight lang="ocaml">let is_prime (_, n, _) =
let rec test x =
let d = n / x in x > d || x * d <> n && n mod (x + 2) <> 0 && test (x + 6)
in
if n < 5
then n lor 1 = 3
else n land 1 <> 0 && n mod 3 <> 0 && test 5

let factorials_plus_minus_one =
let rec next x y () =
Seq.Cons ((x, pred y, 0), Seq.cons (x, succ y, 1) (next (succ x) (succ x * y)))
in
next 1 1

let () =
let show (x, y, a) = Printf.printf "%3u! %c 1 = %u\n" x [|'-'; '+'|].(a) y in
factorials_plus_minus_one |> Seq.filter is_prime |> Seq.take 10 |> Seq.iter show</syntaxhighlight>
{{out}}
<pre>
1! + 1 = 2
2! + 1 = 3
3! - 1 = 5
3! + 1 = 7
4! - 1 = 23
6! - 1 = 719
7! - 1 = 5039
11! + 1 = 39916801
12! - 1 = 479001599
14! - 1 = 87178291199
</pre>
</pre>