Python 3 Alle Teiler einer Zahl ausgeben?

3 Antworten

Der Umweg über "*10" und "%10" ist überflüssig bzw. sogar Falsch, da "/" bei ganzzahligen Argumenten den abgerundeten Wert liefert. 

Beispiele:

12 % 11 == 1 -> 11 ist kein Teiler von 12!

(12*10 /11) %10 =
(120 / 11) % 10 = 
( abgerundet(10,909))%10 = 
 10 % 10 = 0

lasss den Umweg über den Faktor 10 weg und berechne/überprüfe den Rest der Division 

zahl % i==0
zahl = 15
i = math.floor(zahl/2) while(i>1): if(zahl%i==0): print(i) i-=1

ok hab == 0 vergessen
1 und zahl is ja logisch

Wenn der eingegebene Wert (wert) durch die Laufvariable (zahl) den Rest Null ergibt, dann ist zahl ein Teiler von wert.

Also müsste es heißen: if (wert % zahl == 0) ...
[i wäre demnach überflüssig]

Ist diese Bedingung erfüllt, wird die print-Anweisung immer wieder neu ausgeführt. Du hast für jeden einzelnen Teiler immer wieder "Alle Teiler von ... sind ... " da stehen. Die Ausgabe müsste also auch noch überarbeitet werden.

(Bin kein besonderer Python-Kenner; evtl. gehts mit "vorgefertigten Funktionen" eleganter)