Ich versuche eine Methode zu schreiben, die berechnet, ob zwei Zahlen für eine Zuweisung relativ prim sind. Ich suche primär nach Antworten auf die Frage, wo ich anfangen soll. Ich weiß, dass es eine Methode gcd()
gibt, die eine Menge davon für mich tun wird, aber die Aufgabe macht mich so ziemlich ohne gcd oder Arrays.
Ich habe es irgendwie angefangen, weil ich weiß, dass ich den Operator %
in einer for-Schleife benutzen muss.
Offensichtlich gibt diese Methode nur true
oder false
zurück, da die main
Funktion nur eine bestimmte Zeile ausgibt, abhängig davon, ob die beiden Zahlen relativ prim sind oder nicht.
Ich denke, ich werde wahrscheinlich zwei for
Schleifen schreiben müssen, sowohl für input4
als auch input5
, und möglicherweise eine Art if
Anweisung mit einem logischen &&
Operand, aber ich bin nicht sicher.
Nun, wenn sie relativ prim sind, ist der größte gemeinsame Teiler eins, weil - wenn nicht anders - beide Zahlen durch diese Zahl geteilt werden könnten. Wir brauchen also nur einen Algorithmus, um den größten gemeinsamen Teiler zu berechnen, zum Beispiel Euklids Methode :
%Vor%Und dann:
%Vor%Der Algorithmus von Euklid funktioniert in O (log n) , was also viel schneller ist als die Aufzählung aller potentiellen Teiler, die auf O (sqrt n) optimiert werden können. .
Ich denke, das ist die einfache Lösung. Stellen Sie Fragen in Kommentaren.
Swift 4 Code für @ williem-van-onsem Antwort;
%Vor%Verwendung;
%Vor%