Wieferich primes: Difference between revisions

no edit summary
m (→‎{{header|Wren}}: Minor tidy)
No edit summary
Line 996:
 
=={{header|Python}}==
<syntaxhighlight lang="python">#!/usr/bin/python
# Wieferich-Primzahlen
MAX: int = 5_000
 
# Berechnet a^n mod m
def isPrime(n):
def pow_mod(a: int, n: int, m: int) -> int:
assert n >= 0 and m != 0, "pow_mod(a, n, m), n >= 0, m <> 0"
ifres: qint == 1:
a p -%= 1m
while pn > 10:
p2 = p ** if n%2:
q res = (2 res* qa) % p2m
n -= 1
else:
a = (a*a)%m
n //= 2
return res%m
 
def is_prime(n: int) -> bool:
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
 
def isWeiferichis_wieferich(p: int) -> True:
if not isPrimeis_prime(p) == False:
return False
qif pow_mod(2, p - 1, p*p) == 1:
p2 = p ** 2
while p > 1:
q = (2 * q) % p2
p -= 1
if q == 1:
return True
else:
return False
 
 
if __name__ == '__main__':
print(f"Wieferich primes less than 5000{MAX}: ")
for i in range(2, 5001MAX + 1):
if isWeiferichis_wieferich(i):
print(i)</syntaxhighlight>
</syntaxhighlight>
{{out}}
<pre>Wieferich primes less than 5000:
5

edits