Herausfinden, ob zwei Zahlen relativ prim sind

7

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.

%Vor%

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.

    
Tony 18.02.2015, 03:22
quelle

3 Antworten

24

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. .

    
Willem Van Onsem 18.02.2015, 03:40
quelle
0
%Vor%

Ich denke, das ist die einfache Lösung. Stellen Sie Fragen in Kommentaren.

    
BSeitkazin 18.02.2015 03:38
quelle
0

Swift 4 Code für @ williem-van-onsem Antwort;

%Vor%

Verwendung;

%Vor%     
Celil Bozkurt 09.12.2017 14:14
quelle

Tags und Links