www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

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.vorhilfe.de