Zum Inhalt springen

Primfaktorzerlegung C#


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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.

Geschrieben

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

Geschrieben

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

Geschrieben
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).

Geschrieben
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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

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

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...