Hallo Community
Da ich noch eher Neuling im Bereich C# bin, sind mir komplexere Schleifen noch etwas fremd. Daher erlaube ich mir folgende Frage: Wie muss eine Schleife aussehen, wenn ich ermitteln will, aus welcher Kombination (x1 * x2) eine bekannte Zahl besteht.
Es gibt also eine Grosse, bekannte Zahl, die aus 2 kleineren multipliziert wurde. Nun gibt es 20 mögliche Multiplikatoren. Ich möchte demnach herausfinden, aus welchen 2 Zahlen der 20 Möglichkeiten diese nun besteht. aus 20 möglichen Multiplikatoren gibt es (n + m - 1)! / ((n - 1)! * m!) = 210 Kombinationsmöglichkeiten, sofern ich das richtig berechnet habe. Es sollten alle Kombinationen die zu dieser Zahl führen ausgegeben werden.
Sehr vereinfacht und nur mit 2 Kombinationen (aber natürlich noch nicht brauchbar) dargestellt, würde das etwa so aussehen.
long a = 1;
long b = 2;
long c = 3;
long d = 4;
long e = 5;
long f = 6;
long g = 7;
long h = 8;
long j = 9;
long k = 10;
long l = 11;
long n = 12;
long m = 13;
long o = 14;
long p = 15;
long q = 16;
long r = 17;
long s = 18;
long t = 19;
long u = 20;
private void btnAnalyce_Click(object sender, EventArgs e)
{
uint Zahl = (8);
while (true)
{
if (Zahl == (b * c))
{
MessageBox.Show("ja, = b * c");
break;
}
else if (Zahl == (b * d))
{
MessageBox.Show("ja, = b * d");
break;
}
else
{
MessageBox.Show("nein");
break;
}
}
}
Wäre toll wenn da jemand ist, der dafür eine elegante Lösung hat. Später sind das sehr grosse Zahlen, daher auch long und uint.
Eleganter wäre es die Zahlen in einem Array oder in einer List<> zu speichern.
long[] numbers = new long[] { 1,2,3,4,5,6,7,8,9,10 };
for(int i = 0; i < numbers.Length; i++)
for(int j = 0; j < numbers.Length; j++)
if (zahl == numbers[i] * numbers[j]) MessageBox.Show(numbers[i].ToString() + " x " + numbers[j].ToString());
Möchtest Du eine Verschlüsselung mit private key knacken ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Hallo Bernd,
Vielen Dank, das funktioniert bereits recht gut. N = (p * q) wäre ein Argument. Primär geht es mir aber um eine andere Aufgabe. Aber ja, es handelt sich schon um (grosse) Primzahlen. Demnach müsste ich wahrscheinlich noch -1 einbauen ?
Grüsse
Omega