Jump to content

Primfaktorzerlegung C#

Empfohlene Beiträge

Ich muss ein Programm mit C# schreiben, welches mir bei Eingabe einer Beliebigen Zahl die dazu gehörigen Primfaktoren ausgibt.

Bsp. Eingabe: 100 Ausgabe: 2*2*5*5

Bekomm es allerdings nicht zusammen.

Irgendwelche Anregungen?

Bin für jede Hilfe dankbar

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

So wird mir leider nur das Ergebnis ausgegeben bei Eingabe von hundert bspw. 100:50

static void Main(string[] args)

{

int zahl;

int i;

Console.WriteLine("Bitte geben Sie eine Zahl ein: ");

zahl = Convert.ToInt32(Console.ReadLine());

for (i = 2; i <= zahl; i++)

{

if (zahl % i == 0)

Console.WriteLine("{0}: " + zahl / i, zahl);

else if (zahl % i != 0)

i++;

Console.WriteLine("{0}: " + zahl / i, zahl);

break;

}

Console.ReadLine();

komm einfach nicht drauf...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
So wird mir leider nur das Ergebnis ausgegeben bei Eingabe von hundert bspw. 100:50
Erstens musst du i ausgeben, nicht zahl, und das auch nur, wenn du einen Teiler gefunden hast. Zweitens musst du zahl durch i teilen, wenn du einen Teiler gefunden hast. Also wirklich zahl ändern.

Du musst durch die Primzahlen teilen, Du inkrementierst i, d.h. da steht irgendwann 4 drin, aber das ist keine Primzahl. i darf immer nur eine Primzahl sein

Wenn er den Rest richtig macht, ist das sogar egal. Die Zahl ist nicht mehr durch 4 teilbar, wenn er die 2 immer schön rausdividiert hat.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

static void Main(string[] args)

{

int zahl;

int i = 2;

bool prim;

Console.WriteLine("Bitte geben Sie eine Zahl ein: ");

zahl = Convert.ToInt32(Console.ReadLine());

prim = i % 1 == 0 && i % i != 0;

i = prim;

while(zahl % i != 0)

{

i++;

}

if (zahl % i == 0)

Console.WriteLine("{0}: " + i, zahl);

Console.ReadLine();

}

ich habe nun das Problem dass er mir eine Fehlermeldung ausspuckt bei i = prim

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

also das mit den Primzahlen würde ich wieder vergessen, hier geht es um eine kleine aufgabe die gelöst werden soll und nicht um eine effiziente Funktion die riesige Zahlen lösen kann auf schnellste weise

was dir glaub ich noch klar werden sollte ist:

wenn folgendes zutrifft: if (zahl % i == 0),

dann heißt das, dass i ein teil der lösung ist, und dann musst du die zahl durch dieses i teilen und die forschleife von vorne beginnen

kann dir gerne meine lösung posten, aber ich denk das bringt dir nicht viel

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
forschleife von vorne beginnen

Bitte nicht ein schon komplexes Problem noch ineffizienter loesen als notwendig, natuerlich beginnst Du bei dem entsprechenden Teiler wieder, der bei der letzten Iteration ermittelt worden ist, alle kleineren Primzahlfaktoren wurden ja vorher schon ausgeschlossen (ergibt sich ja allein schon aus dem Distributivgesetz, wenn ein Produkt schon vorher nicht durch einen moeglichen Faktor teilbar war, wird es das auch niemals sonst sein).

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Bitte nicht ein schon komplexes Problem noch ineffizienter loesen als notwendig, natuerlich beginnst Du bei dem entsprechenden Teiler wieder, der bei der letzten Iteration ermittelt worden ist, alle kleineren Primzahlfaktoren wurden ja vorher schon ausgeschlossen (ergibt sich ja allein schon aus dem Distributivgesetz, wenn ein Produkt schon vorher nicht durch einen moeglichen Faktor teilbar war, wird es das auch niemals sonst sein).

ja ok, da hast du natürlich recht, aber das sind doch bereits Sachen die man erst berücksichtigen muss wenn das Ergebnis stimmt und es ans optimieren geht

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung