p wird immer dann 0, wenn die zu testende Zahl ohne Rest durch i teilbar ist.
Eine Zahl darf nur durch sich selbst und 1 ohne Rest geteilt werden können, damit sie prim ist.
Das Programm teilt die zu prüfende Zahl durch sämtliche Zahlen i=1..zahl-1, und merkt sich wie oft bei der Division kein Rest entsteht. Wenn das nur einmal der Fall ist (bei i=1), dann ist die Zahl prim.
edit: äh, so sollte es wohl gedacht sein. lass mich das nochmal ansehen
edit2: ja, wahrscheinlich sollte im programm statt "summe = summe + i;" stehen: "summe = summe + 1;"
Es gibt aber effizientere Verfahren, um Primzahlen zu finden. Ebenfalls recht anschaulich ist das "Sieb des Eratosthenes": http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes