Echte Teilersumme - Schleife

jonasvi

Mitglied
Guten Tag ;)
Bin Mathe-Student und übe grad für die Klausur im Info-Modul.

Ich habe bei dieser Aufgabe ein kleines Problem:

"Die echte Teilersumme einer Zahl n ist die Summe der Teiler von n ohne die Zahl n selbst. Beispiele:
6 : 1 + 2 + 3 = 6
9 : 1 + 3 = 4
13 : 1 = 1
Schreiben Sie eine Schleife, um für alle Zahlen von 1 bis 1000 jeweils die echte Teilersumme zu berechnen und auszugeben."

Nun wollte ich das zuerst langsam angehen und für einzelne Zahlen die echte Teilersumme berrechnen, was nicht schwer ist. So klappt das Ganze dann gut:
Code:
public class EchteTeilerzummeEinzeln {

    public static void main(String[] args) {

        int x = 25;
        int teiler;
        int zähler = 0;

        for (teiler = 1; teiler < x; teiler++) {
            if (x % teiler == 0) {
                zähler += teiler;

            }
        }
        System.out.println(zähler);
    }
}
Dann hab ich versucht die eigentliche Aufgabe zu bearbeiten mit der Schleife, aber irgendwie klappt das Ganze nicht so.
z.B.:
Code:
public class Spielen {

    public static void main(String[] args) {
        int zahlen;
        int teiler;
        int zähler = 0;
        for (zahlen = 1; zahlen < 1000; zahlen++) {
            for (teiler = 1; teiler < zahlen; teiler++) {
                if (zahlen % teiler == 0) {
                    zähler += teiler;
                    {
                        System.out.println(zähler);
                    }
                }
            }
        }
    }
}
Habe mit den Klammern rumgespielt und vieles ausprobiert.
Aufjedenfall liegt das Problem beim Zähler, der ja nach dem Durchgang einer Zahl sich nicht wieder auf 0 setzt.
Wie kann ich das auftreten lassen? Und sind da noch andere Komplikationen?


Ich bedanke mich für jede Hilfe ;D


Mit freundlichen Grüßen,
jonasvi
 

JCODA

Top Contributor
Du hast das Problem erkannt, es geht so:

Java:
public class Spielen {

    public static void main(String[] args) {
        for (int zahl = 1; zahl < 1000; zahl++) {
            int teilersumme = 0;
            for (int teiler = 1; teiler < zahl; teiler++) {
                if (zahl % teiler == 0) {
                    teilersumme += teiler;
                }
            }
            System.out.println("Die Teilersumme von " + zahl + " ist "
                    + teilersumme);
        }
    }
}
 

Neue Themen


Oben