Primfaktorzerlegung
-
Ich soll eine Zahl in Primfaktoren zerlegen, als Beispiel mal die 20, aber ich komme nicht so recht weiter, da mein Programm nach der Überprüfung nicht wieder einen Schritt zurück springt:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Zahlenausgabe
{
class Program
{
static void Main(string[] args)
{
int Rest = 20;if (Rest>1)
{
int Teiler = 2;if (Rest % Teiler == 0)
{
Console.WriteLine(Teiler);
Rest = Rest / Teiler;
}
else
{
do
{
Teiler = Teiler + 1;
}
while (Teiler <= Rest);
}
}
else
{
Console.WriteLine("Programmende!");
}
Console.ReadLine();
}
}
}
-
Servus,
zuerst solltest du dir angewöhnen den geposteten Code in Tags zu setzen. Dann könntest du dir vielleicht vorher Gedanken darüber machen, ob nicht vielleicht ein anderer User vor einem ähnlichen Problem stand. Das führt dann auch dazu, dass man die Suche benutzt. Mal ganz nebenbei, solche Themen wie Primfaktorzerlegung gibts zu Hauf...
Gut, hättest du diese ganzen Ratschläge beachtet, dann wärst du auf (u.A.) folgenden Thread gestoßen:
http://www.c-plusplus.net/forum/224509
Ok, es ist nun C++. Aber das sollte bestimmt kein Hindernis sein, dass Ganze umzuschreiben oder?
Ne, bestimmt nicht. Hättest du auch das berücksichtigt, dann wurde dein Code nun ungefähr so aussehen:
static void Main(string[] args) { long zahl = 20; long teiler = 0; Console.Write("{0} = ", zahl); while (zahl != 1) { teiler = Teiler(zahl); Console.Write(teiler); zahl = zahl / teiler; if (zahl != 1) Console.Write(" * "); } Console.WriteLine(); Console.WriteLine("Programmende!"); Console.ReadLine(); } static long Teiler(long zahl) { long teiler = 2; long x = (long)Math.Sqrt(zahl); while (zahl % teiler != 0) { if (teiler >= x) return zahl; else teiler++; } return teiler; }
Verblüffend oder?