Methode



  • Hallo,

    ich möchte gerne eine Methode schreiben die mir alle Primteiler einer Zahl zurück liefert und nur diese.

    zb bei Zahl 12 hat die Primteiler 1 3;

    Leider weis ich nicht genau wie ich das machen kann ....

    Ich dachte an eine Forschleife die mir alle Teilergibt und eine weitere schleife testet ob es eine Primzahl ist wenn ja wird sie ausgeben...

    aber das wirkt mir alles etwas zu groß für so eine kleine Methode.

    danke im voraus



  • Primteiler

    Du meinst Primfaktoren.

    zb bei Zahl 12 hat die Primteiler 1 3

    1 ist keine Primzahl und die 2 fehlt.

    Fang einfach an und wenn du Probleme hast, stelle konkrete Fragen!



  • Primpim schrieb:

    ich möchte gerne eine Methode schreiben die mir alle Primteiler einer Zahl zurück liefert und nur diese.

    Du meinst sicherlich nur "Funktion" statt "Methode". Den Begriff "Methode" benutzt man manchmal für spezielle Funktionen, die man nur "auf einem Objekt" aufrufen kann. Z.B. so: object.methode(3);

    Primpim schrieb:

    zb bei Zahl 12 hat die Primteiler 1 3;

    Du meinst sicherlich 2 und 3.

    Primpim schrieb:

    Ich dachte an eine Forschleife die mir alle Teilergibt und eine weitere schleife testet ob es eine Primzahl ist wenn ja wird sie ausgeben...

    Das klingt doch gut. Ich würde die aber empfehlen nicht alles in eine Funktion zu packen. Für das Teilproblem "istPrimzahl" bietet sich ja eine eigene Funktion an. Das macht das ganze auch und übersichtlicher und der Primzahltest wäre dann wiederverwendbat. Also so:

    #include <iostream>
    
    bool istPrimzahl(long z)
    {
      ...
    }
    
    void printPrimTeiler(long z)
    {
      using namespace std;
      for ... {
        ...
        if (istPrimzahl(...)) {
          cout << ... << endl;
        }
        ...
      }
    }
    
    int main()
    {
      printPrimTeiler(12);
    }
    

    Viel Spaß!



  • Das hier war mein Ansatz aber irgendwie gibt er mir da 8 mal -858993460 an...

    int main()
    {
    
    	int Zahl = 12;
    	int Speicher[12];
    
    	for(int i=1;i<=Zahl;i++)
    	{
    		if (Zahl%i == 0)
    		{
    			for(int j = 0;i <12;i++)
    			{
    			Speicher[j]= Zahl;
    			cout<<Speicher[i]<<endl;
    			}
    
    		}
    
    		else 
    		{
    
    		}
    
    	}
    


  • for(int j = 0;i <12;i++) { Speicher[j]= Zahl; ...
    

    Du willst also die gleiche Zahl immer an die gleiche Stelle schreiben? Wohl kaum.

    cout<<Speicher[i]<<endl
    

    Hier gibst du dann nicht-initialisierte Werte aus. Also Bloedsinn. Dein Bloedsinn hat halt den Wert -858993460.



  • ja j++ hatte ich vergessen. und ausgabe j....
    aber dennoch funkst das ja nicht irgendwas habe ich falsch weis aber nicht was..
    würde mir evtl einer meinen code mal verbessern.



  • Hast auch das i<12 durch j<12 ausgetauscht? Vielleicht postest du mal eine aktualisierte Variante.


Anmelden zum Antworten