www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenJavaPerfekte Zahlen
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
Forum "Java" - Perfekte Zahlen
Perfekte Zahlen < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Perfekte Zahlen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:22 Do 04.11.2010
Autor: Fatih17

Hallo,

ich wollte ein Programm schreiben, dass perfekte Zahlen berechnet. Das heißt z.B.: 6=3+2+1 also ist 6 eine perfekte Zahl, da die Summe all ihrer Teiler auch 6 ergibt.

Das Problem:

Ich habe es zwar geschafft, dass er augibt, dass es eine perfekte Zahl gibt, aber ich muss es auch hinkriegen, dass er den Rechenweg ausgibt. Also das "3+2+1".

Meine Idee:

Ich dachte da an Modulo. Er soll alle Teiler ermitteln die keinen Rest haben und diese ausgeben. Ich habe es dann erstmal in einem anderen Code allgemein versucht bekomme es aber nicht hin.


Hier der Code für die Berechnung der vollkommenen Zahlen:


public class test
{
public static void main ( String[] args )
{



int E;
int T = 1;
int R;
int S = 0;

System.out.println("Test auf vollkommene Zahl");
System.out.println("=========================");
System.out.print("Bitte eine Zahl x > 0 eingeben: ");

E = In.readInt();

while ( T < E )
{
R = E;

while ( R > 0 ) { R =R - T; }

if ( R == 0 ) { S =S + T; }

T = T + 1;
}

if ( S == E )
{
System.out.println("Die Zahl " + E + " ist eine vollkommene Zahl.");
}
if ( S!=E)
{
System.out.println("Die Zahl " + E + " ist keine vollkommene Zahl.");
}
}
}


Hier der Code für die Berechnung der Teiler die nicht funktioniert :

public class Perfekt
{
public static void main ( String[] args )
{

int j;
int x;
int y = 1;
int z;

System.out.println("Test auf Teiler");
System.out.println("=========================");
System.out.print("Bitte eine Zahl x > 0 eingeben: ");

x = In.readInt();


while (x>0) {
x=x-y;
z=x;
j=z%y;
if (j==0) {

System.out.println("Teiler sind"+j);

}
}
}
}



Danke schonmal im voraus :)

        
Bezug
Perfekte Zahlen: Antwort
Status: (Antwort) fertig Status 
Datum: 16:18 Do 04.11.2010
Autor: leduart

Hallo
ich versteh schon nicht dein Vorgehen bei der Teilersuche: du ziehst immer wieder y=1, also 1 von deiner Zahl ab?
ich hab vergessen , oder weiss nicht was z%y, hier also z%1 tut?
eigntlich willst du die Teiler deiner Eingabe, dabei vielleicht wissen, dass wenn 2 kein Teiler ist auch alle restlichen geraden Zahlen keine Teiler sind,
Schon dein erstes Teilprogramm ist ja was schwerfällig.
un etwa rauszukriegen, ob 1234 durch 2 Teilbar ist brauchst du 617 Schritte?
wieviel Schritte braucht dein programm um rauszufinden ob 1 Million eine perfekte Zahl ist?
Aber wenn schon so kompliziert warum Merkt sich in dem Schritt
if ( R == 0 ) { S =S + T; }
das T, z:Bsp mit T=Te(i), i=i+1 wobei du natürlich noch Te initialisieren musst.
Gruss leduart


Bezug
                
Bezug
Perfekte Zahlen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:27 Do 04.11.2010
Autor: Fatih17

Hallo,

das % berechnet ob der Teiler der eingebenen Zahl eine Kommastelle hat oder nicht. Falls nicht also ==0 soll er es ausgeben.

Ich habe mal einen anderen Code geschrieben, vielleicht ist dieser verständlicher:

public class Perfekt   {
public static void main(String[] args)
    {
        
        int k;
        int n;
        int summe = 0;
        
        System.out.print("Bitte eine Ganzzahl eingeben: ");
        n = In.readInt();
        
        for(int j = n; j > 1; j--)
        {
            
            for(int i = 1; i < j; i++)
            {
    
                if(j%i == 0)
                {

                    summe = summe + i;
System.out.println("Teiler ist" +i);

                }
                if(summe > n )
                break;
            }
            if(summe == j)
            {
                    System.out.println("Die Zahl: " +j+ " ist eine perfekte Zahl!");
            }
        }
    }
}


Jetzt schreibt er zwar die Teiler richtig, aber warum folgen daraufhin viele 1en??

Bezug
                        
Bezug
Perfekte Zahlen: Antwort
Status: (Antwort) fertig Status 
Datum: 16:40 Do 04.11.2010
Autor: leduart

Hallo
für jedes j geht er wieder in die i schleife, die mit 1 anfängt, das ein Teiler von allen j ist, also druckt er jedes mal das i aus.
Durchlauf deine Schleifen immer selbst mindestens 2 mal, befolge selbst (ohne computer) alle deine Anweisungen, dann weisst du was passieren wird.
gruss leduart


Bezug
                                
Bezug
Perfekte Zahlen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:19 Do 04.11.2010
Autor: Fatih17

tut mir leid aber ich verstehe nicht was du meinst , der soll ja eigentlich aufhören wenn die summe = n wird. Tut er aber irgendwie nicht, sondern macht weiter, aber warum, weiß ich immernoch nicht!

Bezug
                                        
Bezug
Perfekte Zahlen: Antwort
Status: (Antwort) fertig Status 
Datum: 17:29 Do 04.11.2010
Autor: leduart

Hallo
wenn die Summe>n wird, geht er aus der i Schleife raus in die j schleife, da wird er direkt wieder in die i schleife gejagt, i=1, und dann der Befehl print i
Geh doch wirklich mal selbst deine Schleifen durch, nimm dann an s>n was sind dann deine Anweisungen?
Gruss leduart


Bezug
                                                
Bezug
Perfekte Zahlen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:36 Do 04.11.2010
Autor: Fatih17

Aha, okay ich habe es jetzt kapiert und berichtigt:

Jetzt gibt er tatsächlig die Teiler untereinander aus.

Hier der Code:



public class Perfekt   {
    public static void main(String[] args)
    {
        int i;
        int k;
        int n;
        int summe = 0;
        
        System.out.print("Bitte eine Ganzzahl eingeben: ");
        n = In.readInt();
        
        for(int j = n; j > 1; j--)
        {
            
            for( i = 1; i < j; i++)
            {
                
                if(j%i == 0)
                {
                
                    
                    System.out.println("Teiler ist" +i);
                     summe = summe + i;

                }
                if(summe > n )
                break;
            }
               if(summe == n)
            {
               System.out.println("Die Zahl: " +j+ " ist eine perfekte Zahl!");
            }
             if ( i==n) { break;}

                                                                 
        }
    }
}  



Jetzt gibt es das nächste Problem:

Wie kriege ich diese hintereinander ausgegeben. Er schreibt die ja immer von oben nach unten nicht von links nach rechts ?

Bezug
                                                        
Bezug
Perfekte Zahlen: Antwort
Status: (Antwort) fertig Status 
Datum: 11:20 Fr 05.11.2010
Autor: leduart

Hallo
du solltest ne Liste von java Befehlen anlegen und haben, am besten ausdrucken und neben deinen computer legen.
prinln(..) ist der Befehl drucken und in die nexte Zeile springen.
print tut das nicht, aber soll er wirklich vor jede Zahl schreiben Teiler ist?
Gruss leduart


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]