Die Zeile müsste lauten:
for(teiler = 2; teiler <= zahl-1; teiler++)
zahl-- heißt ja zahl = zahl - 1.
Das heißt zahl wird bei jedem Schleifendurchlauf um eins verringert, das darf es aber nicht.
teiler++ ist korrekt, da ja teiler bei jedem Schleifendurchlauf um eins erhöht werden soll, damit die Schleife irgendwann einmal aufhören soll...