Python :: Aufgabe #261
4 Lösungen
Zwei-Quadrate-Satz (Fermat / Girard)
Anfänger - Python
von JKooP
- 06.04.2020 um 14:49 Uhr
1. Schreibe eine Funktion bzw. Methode mit der es möglich ist zu überprüfen, ob es sich bei der eingegebenen Zahl um eine Primzahl handelt.
2. Erweitere das Programm dahingehend, dass nur die ungeraden Primzahlen ausgegeben werden, welche dem Quadrate- Satz von
Fermat entsprechen. Also der Summe zweier ganzzahliger Quadrate.
Beispiele:
5 = 1² + 2², 13 = 2² + 3², 17 = 1² + 4², …
Gegenbeispiele:
3, 7, 11, 19 funktionieren nicht, da sie durch 4 geteilt (Modulo 4) nicht den Wert 1 ergeben. Daher gibt es auch keine Lösung (4n+1).
3. Erweitere das Programm wiederum, sodass die möglichen Lösungen aus als Zahlenpaare auf dem Bildschirm ausgegeben werden.
z.B.: 13 (2,3)
Viel Spaß
2. Erweitere das Programm dahingehend, dass nur die ungeraden Primzahlen ausgegeben werden, welche dem Quadrate- Satz von
Fermat entsprechen. Also der Summe zweier ganzzahliger Quadrate.
Beispiele:
5 = 1² + 2², 13 = 2² + 3², 17 = 1² + 4², …
Gegenbeispiele:
3, 7, 11, 19 funktionieren nicht, da sie durch 4 geteilt (Modulo 4) nicht den Wert 1 ergeben. Daher gibt es auch keine Lösung (4n+1).
3. Erweitere das Programm wiederum, sodass die möglichen Lösungen aus als Zahlenpaare auf dem Bildschirm ausgegeben werden.
z.B.: 13 (2,3)
Viel Spaß
Lösungen:
liste = list(range(2,100))
#Primzahltest
def prim_zahl(zahl):
a = int(zahl**0.5)
for j in range(2, a+1):
if zahl%j ==0:
b = 0
break
else:
b = 1
return b
#Quadrate-Satz von Fermat
for k in range(0,len(liste)):
zahl = liste[k]
for i in range(int(zahl**0.5),0,-1):
for j in range(0,i):
if (i*i+j*j) == zahl:
print("Zahl = ",zahl)
print("z1 = ", j)
print("z2 = ",i)
print()
break
liste = list(range(4,100))
#Primzahltest
def prim_zahl(zahl):
a = int(zahl**0.5)
for j in range(2, a+1):
if zahl%j ==0:
b = 0
break
else:
b = 1
return b
#Quadrate-Satz von Fermat
for k in range(0,len(liste)):
zahl = liste[k]
if prim_zahl(zahl) == 1:
for i in range(int(zahl**0.5),0,-1):
for j in range(0,i):
if (i*i+j*j) == zahl:
print("Zahl = ",zahl)
print("z1 = ", j)
print("z2 = ",i)
print()
break
import math
liste = []
zahl = int(input("Zu prüfende Zahl eingeben: "))
def prim(zahl):
if zahl == 2:
return True
elif zahl % 2 == 0:
return False
else:
for i in range(3,int(math.sqrt(zahl)) + 1,2):
if zahl % i == 0:
return False
return True
if prim(zahl) == True:
print(str(zahl), "ist eine Primzahl")
for i in range(1, int(zahl/4)+1):
if i*4 + 1 == zahl:
liste.append(i)
break
if len(liste) > 0:
for i in range(1,int(math.sqrt(zahl))+1):
if len(liste) == 3:
break
for j in range(1,int(math.sqrt(zahl))+1):
if i**2 + j**2 == zahl:
liste.append(str(i)+"²")
liste.append(str(j)+"²")
break
print(str(zahl),"=",liste[1],"+",liste[2])
else:
print(str(zahl), "ist keine Primzahl")def prim_generator(n):
L = [2, 3, 5, 7]
L1 = [i for i in range(2,n+1) for j in range(4) if i % L[j] == 0]
x = [i for i in range(2,n+1) if i not in L1]
L.extend(x)
return L
#Primzahltest
def prim_zahl(zahl):
L = [2, 3, 5, 7]
L1 = [i for i in range(2,zahl+1) for j in range(4) if i % L[j] == 0]
L.extend([i for i in range(2,zahl+1) if i not in L1])
if zahl in L:
return 1
else:
return 0
# Quadrate-Satz von Fermat
liste = prim_generator(100)
liste = [liste[i] for i in range(len(liste)) if liste[i]%4==1]
print(liste)