C# finde den größten gemeinsamen Teiler
"Den größten gemeinsamen Teiler von zwei ganzen zahlen ist die größte ganze Zahl, die gleichmäßig teilt jede der beiden zahlen. Write-Methode Gcd liefert den größten gemeinsamen Teiler von zwei ganzen zahlen. Integrieren die Methode in eine app, die liest zwei Werte vom Benutzer ein und zeigt das Ergebnis an."
(dies ist keine Hausaufgabe, nur eine übung in dem Buch, das ich verwende)
können Sie mir helfen, dieses Problem lösen? Hier ist, was ich habe, so weit. Dank
(Bearbeiten - die ich Einreichen kann, die zwei zahlen, aber es wird nicht die Berechnung der Gcd für mich)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Greatest_Common_Divisor
{
class Program
{
static int GetNum(string text)
{
bool IsItANumber = false;
int x = 0;
Console.WriteLine(text);
do
{
IsItANumber = int.TryParse(Console.ReadLine(), out x);
} while (!IsItANumber);
return x;
}
static void Main(string[] args)
{
string text = "enter a number";
int x = GetNum(text);
text = "enter a second number";
int y = GetNum(text);
int z = GCD(x, y);
Console.WriteLine(z);
}
private static int GCD(int x, int y)
{
int v = 0;
int n = 0;
v = GetGreatestDivisor(x, y);
return v;
}
static int GetGreatestDivisor(int m, int h)
{
do
{
for (int i = m; i <= 1; i--)
if (m%i == 0 && h%i == 0)
{
int x = 0;
x = i;
return x;
}
} while (true);
return m;
}
}
}
- Ist dein code funktioniert nicht oder nur unvollständig?
- Was ist hier das problem?
- Ich kann senden, die die zwei zahlen, aber es wird nicht die Berechnung der Gcd für mich
- Sollten Sie aus der euklidischer Algorithmus.
for (int i = m; i <= 1; i--)
wird nicht ausgeführt, wennm > 1
Sie gemeinti >= 1
.- ja, das war das problem vielen Dank. Ich bin neu auf stackoverflow wie schließe ich eine Frage?
- Don ' T Sorge zu viel über es. Die Gemeinschaft wird ihn schließen, wenn es das ist, was erforderlich ist. Wenn diese Frage geschlossen ist, bitte nehmen Sie es nicht persönlich. Es ist nur ein Versuch, um sicherzustellen, dass der Inhalt bei stackoverflow ist prägnant.
- Du hast ein paar Antworten - aber ich würde nicht löschen, eine Frage oder etwas ähnliches. Könnte jemand brauchen, der Antworten später. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Implementierung des Euklidischen Algorithmus liefert den größten gemeinsamen Teiler ohne heap-allocation.
Ersetzen können
ulong
füruint
wenn nötig. Ein unsigned Typ verwendet wird, wie die Technik funktioniert nicht für signed-Werte. Wenn Sie wissen, dass Ihra
undb
Werte sind nicht negativ ist, können Sielong
oderint
statt.Diese Methode wird verwendet, in meinem Metadaten-extractor Bibliothek, wo es zugeordnet hat unit-tests.
Mithilfe von LINQ-die Aggregat-Methode:
Hinweis: obige Antwort entlehnt akzeptierte Antwort auf Größten Gemeinsamen Teiler von mehr als 2 ganzen zahlen.
Können Sie versuchen, mit diese:-
Versuchen Sie dies: