www.vorkurse.de
Ein Projekt von vorhilfe.de
Die Online-Kurse der Vorhilfe

E-Learning leicht gemacht.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Forenbaum
^ Forenbaum
Status Mathe-Vorkurse
  Status Organisatorisches
  Status Schule
    Status Wiederholung Algebra
    Status Einführung Analysis
    Status Einführung Analytisc
    Status VK 21: Mathematik 6.
    Status VK 37: Kurvendiskussionen
    Status VK Abivorbereitungen
  Status Universität
    Status Lerngruppe LinAlg
    Status VK 13 Analysis I FH
    Status Algebra 2006
    Status VK 22: Algebra 2007
    Status GruMiHH 06
    Status VK 58: Algebra 1
    Status VK 59: Lineare Algebra
    Status VK 60: Analysis
    Status Wahrscheinlichkeitst

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
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorkurse.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]