Matheprogramme (ggT, kgV, Primzahlen)
Verfasst: Donnerstag 24. März 2011, 17:26
Hallo Python Freunde,
ich hatte Langeweile und habe zwei kleine Programme geschrieben.
1.Einfaches Programm zum Primzahlen berechnen:2. Zahlen eingeben (nichts eingeben zum berechen). Berechnet kgV, ggT und sortiert die Liste auf und absteigend.
Über Verbesserungen, Anregungen und Ideen würde ich mich freuen.
ich hatte Langeweile und habe zwei kleine Programme geschrieben.
1.Einfaches Programm zum Primzahlen berechnen:
Code: Alles auswählen
def PrimeBerechnen(bis, primzahlen):
if len(primzahlen) < 2:
primzahlen = [2]
datei.write(str(2) + ",")
von = 3
else:
von = primzahlen[len(primzahlen) - 1] + 2
print("Berechne Primzahlen von", von, "bis", bis)
for zahl in range(von, bis, 2):
halb = zahl ** 0.5
try:
for primzahl in primzahlen:
if primzahl > halb:
break
rest = (zahl % primzahl)
if not rest:
raise ZeroDivisionError
except ZeroDivisionError:
continue
primzahlen.append(zahl)
datei.write(str(zahl) + ",")
print("Berechnung fertig!")
return primzahlen
if __name__ == "__main__":
import time, sys
berechnen_bis = int(input("Bitte größte zu berechnene Zahl eingeben: "))
primzahlen = []
try:
datei = open("prmzhln.txt", "r+")
except:
datei = open("prmzhln.txt", "w+")
dateir = datei.read()
daten = dateir.split(",")
for zahl in daten:
try:
primzahlen.append(int(zahl))
except:
break
startzeit = time.time()
try:
primzahlen = PrimeBerechnen(berechnen_bis, primzahlen)
except KeyboardInterrupt:
print("Berechnung abgebrochen!")
print("Letzte Primzahl:", primzahlen[len(primzahlen)-1])
datei.close()
sys.exit()
endzeit = time.time()
zeitdauer = endzeit - startzeit
print("Dauer:", zeitdauer, "Sekunden")
print("Anzahl Primzahlen:", len(primzahlen))
#print("Primzahlen:", primzahlen)
datei.close()
Code: Alles auswählen
def kgV(zahlen):
mal = 1
while True:
vielfaches = zahlen[0] * mal
try:
for zahl in zahlen:
rest = (vielfaches % zahl)
if not rest: pass
else:
raise
break
except: pass
mal += 1
return vielfaches
def ggT(zahlen):
teiler = zahlen[0]
while True:
try:
for zahl in zahlen:
rest = (zahl % teiler)
if not rest: pass
else:
raise
break
except: pass
teiler -= 1
return teiler
if __name__ == "__main__":
zahlen = []
while True:
try:
zahlen.append(int(input("Zahl eingeben: ")))
except:
print("Berechnung beginnt!")
break
z_e_sortiert = sorted(zahlen)
z_u_sortiert = sorted(zahlen, reverse=True)
print("Aufsteigend sortiert: " + str(z_e_sortiert))
print("Absteigend sortier: " + str(z_u_sortiert))
a_kgV = kgV(z_u_sortiert)
a_ggT = ggT(z_e_sortiert)
print("kgV:", a_kgV)
print("ggT:", a_ggT)