Python :: Aufgabe #91 :: Lösung #2
4 Lösungen

#91
Zahl als Produkt zweier Faktoren ohne 0
Fortgeschrittener - Python
von Veigar
- 24.11.2015 um 16:33 Uhr
Schreibe ein Programm das dir für jede beliebige Zahl ausgibt ob sie als Produkt zweier natürlicher Zahlen die beide keine "0" enthalten darstellbar ist.
Zum Beispiel:
deinAlgorithmus(10) =True (5*2)
deinAlgorithmus(100)= True (25*4)
Sehe aber bitte davon ab ganz einfach ein Programm zu schreiben das für alle Zahlen die kleiner sind als die zu testende Zahl und die keine Nullen enthält überprüft ob der "Gegenfaktor" (also die Zahl die mit der Zahn multipliziert die gesuchte zahl ergibt) ebenfalls keine 0en enthält weil das Programm für sehr hohe Zahlen (Milliarde+) eine moderate Rechenzeit in Anspruch nehmen soll.
Zum Beispiel:
deinAlgorithmus(10) =True (5*2)
deinAlgorithmus(100)= True (25*4)
Sehe aber bitte davon ab ganz einfach ein Programm zu schreiben das für alle Zahlen die kleiner sind als die zu testende Zahl und die keine Nullen enthält überprüft ob der "Gegenfaktor" (also die Zahl die mit der Zahn multipliziert die gesuchte zahl ergibt) ebenfalls keine 0en enthält weil das Programm für sehr hohe Zahlen (Milliarde+) eine moderate Rechenzeit in Anspruch nehmen soll.
#2

von Nachbar (2820 Punkte)
- 27.10.2016 um 19:37 Uhr
Zitat:
1000.000.000 dauert 1 Minute 14 Sekunden. Mathematisch wahrscheinlich schlecht gelöst aber mit geht es um das Programmieren und das sollte geklappt haben:

# -*- coding: utf-8 -*- def has_zero(zahl): tmpString = "" zahlString = str(zahl) for i in zahlString: tmpString = tmpString + i if int(tmpString) % 10 == 0: return True return False def no_zeros_in_product(zahl): m1, m2 = 2, 0 a = [] b = False multiplikatoren = {} # Multiplikatoren finden while m1 < zahl: if zahl % m1 == 0: m2 = zahl / m1 # Wiederholungen ausschließen if m2 not in a: a.append(m2), a.append(m1) # Prüfen ob 0en in Multiplikatoren if has_zero(m2) == False and has_zero(m1) == False: multiplikatoren[m1] = m2 b = True m1 = m1 + 1 # Ausgabe if b == False: print "False" else: print "True" for key in multiplikatoren: print str(key) + " * " + str(multiplikatoren.get(key)) no_zeros_in_product(1000000)
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1