morfui2 Geschrieben 25. Oktober 2014 Geschrieben 25. Oktober 2014 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 Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 25. Oktober 2014 Geschrieben 25. Oktober 2014 Bis die Zahl 1 ist: - Prüfen, ob die Zahl durch die erste Primzahl teilbar ist. -> Wenn ja, teilen, ausgeben und nochmal probieren -> Wenn nicht, mit der nächsten Primzahl probieren Zitieren
songokude Geschrieben 25. Oktober 2014 Geschrieben 25. Oktober 2014 hier noch ein kleiner tip for (int i = 2; i <= zahl; i++) { if (zahl % i == 0) { } } Zitieren
morfui2 Geschrieben 26. Oktober 2014 Autor Geschrieben 26. Oktober 2014 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... Zitieren
flashpixx Geschrieben 26. Oktober 2014 Geschrieben 26. Oktober 2014 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 Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 26. Oktober 2014 Geschrieben 26. Oktober 2014 So wird mir leider nur das Ergebnis ausgegeben bei Eingabe von hundert bspw. 100:50Erstens 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. Zitieren
morfui2 Geschrieben 26. Oktober 2014 Autor Geschrieben 26. Oktober 2014 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 Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 26. Oktober 2014 Geschrieben 26. Oktober 2014 ich habe nun das Problem dass er mir eine Fehlermeldung ausspuckt bei i = prim Naja, das ist ja auch Blödsinn. Was willst du mit dieser Zuweisung denn erreichen? Zitieren
songokude Geschrieben 26. Oktober 2014 Geschrieben 26. Oktober 2014 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 Zitieren
Wuwu Geschrieben 26. Oktober 2014 Geschrieben 26. Oktober 2014 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). Zitieren
songokude Geschrieben 27. Oktober 2014 Geschrieben 27. Oktober 2014 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 Zitieren
Empfohlene Beiträge
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.