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...