Factorial primes: Difference between revisions

m
Line 728:
{{libheader|gmpy2}}
 
TakesThis takes about 32 seconds to find the first 33 factorial primes on my machine (Ryzen 5 1500X).
 
<syntaxhighlight lang="python">
from itertools import count
from itertools import islice
from typing import Iterable
Line 739 ⟶ 740:
 
def factorials() -> Iterable[int]:
i: intfact = 1
n:for inti =in count(1):
while True: yield fact
yieldfact n*= i
n *= i
i += 1
 
 
def factorial_primes() -> Iterable[Tuple[int, int, str]]:
for in, nfact in enumerate(factorials()):
if gmpy2.is_prime(nfact - 1):
yield (in, nfact - 1, "-")
if gmpy2.is_prime(nfact + 1):
yield (in, nfact + 1, "+")
 
 
def mainprint_factorial_primes(nlimit=10) -> None:
print(f"First {nlimit} factorial primes.")
for in, factorial_primefact_prime, op in islice(factorial_primes(), 1, nlimit + 1):
s = str(factorial_primefact_prime)
if len(s) > 40:
s = f"{s[:20]}...{s[-20:]} ({len(s)} digits)"
print(f"{in}! {op} 1 = {s}")
 
 
if __name__ == "__main__":
import sys
mainprint_factorial_primes(int(sys.argv[1]) if len(sys.argv) > 1 else 10)
</syntaxhighlight>
 
140

edits