Python :: Aufgabe #68 :: Lösung #1

2 Lösungen Lösungen öffentlich
#68

Giuga-Zahlen berechnen

Anfänger - Python von Gustl - 13.02.2015 um 12:42 Uhr
Eine natürliche Zahl n ist eine Giuga-Zahl, wenn alle ihre Primteiler p den Wert n/p - 1 teilen.

Schreibe ein Programm welches alle Giuga-Zahlen bis zu einer festen Obergrenze ausgibt.

Erläuterung zu einer Giuga-Zahl findest du hier: Wikipedia
#1
vote_ok
von jigga (4260 Punkte) - 12.06.2015 um 15:35 Uhr
Quellcode ausblenden Python-Code
import math
primzahlen = []

def prim(zahl):
	if zahl == 2:
		return True
	
	elif zahl == 0 or zahl ==1 or zahl % 2 == 0:
		return False
	
	else:
		for i in range(3,int(math.sqrt(zahl))+1):
			if zahl % i == 0:
				return False
		return True

def primfaktorzerlegung(zahl):

	liste_2 = []

	if len(primzahlen) == 0:
		for i in range(int(grenze/2)+1):
			if prim(i) == True:
				primzahlen.append(i)

	for j in primzahlen:
		if zahl != 1:
			while zahl % j == 0:
				liste_2.append(j)
				zahl /= j
	
	return liste_2

#Hier beginnt das Hauptprogramm
grenze = int(input("Obergrenze: "))

for i in range(2,grenze+1):
	anzahl = 0

	if prim(i) == True:
		continue
	
	else:
		primfaktorzerlegung(i)
	
		for j in range(len(primfaktorzerlegung(i))):
	
			if (i/primfaktorzerlegung(i)[j] - 1) % primfaktorzerlegung(i)[j] == 0:
				anzahl += 1
	
		if anzahl == len(primfaktorzerlegung(i)):
			print(i,"=",primfaktorzerlegung(i))

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben