Pfanni
03-11-2002, 11:05
Hallo zusammen,
ich teste jetzt schon eine halbe Ewigkeit an einem kleinen JAVA-Programm herum, kann meinen Denkfehler aber einfach nicht finden. Es soll ein Programm sein, das Perfekte Zahlen berechnet und ausgibt. Eine Perfekte Zahl ist eine Zahl, die gleich der Summe aller ihrer ganzzahligen Teiler (einschließlich 1, aber ohne sich selbst) ist.
z.B.
6 = 3+2+1
28 = 14+7+4+2++1
Ich habe es geschafft das Programm so zu schreiben, dass mir ausgegeben wird ob die übergebene Zahl eine Perfekte Zahl ist oder nicht. Jetzt möchte ich aber eine Modifikation, die alle perfekten Zahlen eines bestimmten Bereichs ausgibt. Und daran bin ich gescheitert. Wäre echt toll, wenn jemand meinen Fehler finden würde. Ich tippe das irgendwas in der Richtung boolean-Zuweisung nicht funktioniert. Vielen Dank.
Grüße
Pfanni
das nicht funktionierende Programm:
class PerfekteZahlen2
{
public static void main(String[] args)
{
int max = Integer.parseInt(args[0]);
int help = 1;
for (int n =1; n<=max; n++)
{
boolean antwort = false;
for (int t = 2; t <= (n/2); t++)
{
if((n%t)==0)
{
help=help + t;
}
}
if(help==n)
{
antwort=true;
}
else
antwort=false;
if(n==1)
{
antwort=false;
}
//if (antwort)
// System.out.println(n + " Ist eine perfekte Zahl.");
//else
// System.out.println(n +" Ist keine perfekte Zahl.");
if (antwort)
System.out.println (n);
}
}
}
das funktionierende Ausgangsprogramm, dass nur eine bestimmte Zahl testet:
class PerfekteZahlen
{
public static void main(String[] args)
{
int n = Integer.parseInt(args[0]);
int help = 1;
boolean antwort = false;
for (int t = 2; t <= (n/2); t++)
{
if((n%t)==0)
{
help=help + t;
}
}
if(help==n)
{
antwort=true;
}
if(n==1)
{
antwort=false;
}
if (antwort)
System.out.println(n + " Ist eine perfekte Zahl.");
else
System.out.println(n +" Ist keine perfekte Zahl.");
}
}
ich teste jetzt schon eine halbe Ewigkeit an einem kleinen JAVA-Programm herum, kann meinen Denkfehler aber einfach nicht finden. Es soll ein Programm sein, das Perfekte Zahlen berechnet und ausgibt. Eine Perfekte Zahl ist eine Zahl, die gleich der Summe aller ihrer ganzzahligen Teiler (einschließlich 1, aber ohne sich selbst) ist.
z.B.
6 = 3+2+1
28 = 14+7+4+2++1
Ich habe es geschafft das Programm so zu schreiben, dass mir ausgegeben wird ob die übergebene Zahl eine Perfekte Zahl ist oder nicht. Jetzt möchte ich aber eine Modifikation, die alle perfekten Zahlen eines bestimmten Bereichs ausgibt. Und daran bin ich gescheitert. Wäre echt toll, wenn jemand meinen Fehler finden würde. Ich tippe das irgendwas in der Richtung boolean-Zuweisung nicht funktioniert. Vielen Dank.
Grüße
Pfanni
das nicht funktionierende Programm:
class PerfekteZahlen2
{
public static void main(String[] args)
{
int max = Integer.parseInt(args[0]);
int help = 1;
for (int n =1; n<=max; n++)
{
boolean antwort = false;
for (int t = 2; t <= (n/2); t++)
{
if((n%t)==0)
{
help=help + t;
}
}
if(help==n)
{
antwort=true;
}
else
antwort=false;
if(n==1)
{
antwort=false;
}
//if (antwort)
// System.out.println(n + " Ist eine perfekte Zahl.");
//else
// System.out.println(n +" Ist keine perfekte Zahl.");
if (antwort)
System.out.println (n);
}
}
}
das funktionierende Ausgangsprogramm, dass nur eine bestimmte Zahl testet:
class PerfekteZahlen
{
public static void main(String[] args)
{
int n = Integer.parseInt(args[0]);
int help = 1;
boolean antwort = false;
for (int t = 2; t <= (n/2); t++)
{
if((n%t)==0)
{
help=help + t;
}
}
if(help==n)
{
antwort=true;
}
if(n==1)
{
antwort=false;
}
if (antwort)
System.out.println(n + " Ist eine perfekte Zahl.");
else
System.out.println(n +" Ist keine perfekte Zahl.");
}
}