2016-09-02 3 views
1

Meine Frage ist, wenn ich etwas wie "10 0" eintippe, bekomme ich 10 als GCD. Ich dachte, die Programmierung nicht ausführen, wenn ich in 0 oder Schuhe GCD als 0 eingegeben und nicht 10. Ich habe mit anderen Zahlen ausprobiert und es scheint, mit Ausnahme 0.Finden von GCD mit C

int m, n, remainder; 

    printf ("Enter two intergers: "); 
    scanf("%d%d", &m, &n); 

    while (n != 0) 
    {  
    remainder = m % n;  
    m = n;  
    n = remainder; 
    }  

    printf("GCD: %d\n\n", m); 
+3

'0% 10' ist' 0', kein Rest, also '0' * ist * teilbar durch' 10'. Tatsächlich ist "0" teilbar durch * irgendeine * ganze Zahl ungleich Null ohne Rest. 'gcd (0, x)' ist 'x', das ist kein Fehler. – EOF

+1

[gcd (10, 0)] (http://calculus.nipissingu.ca/gcd/gcd.html) ist '10'. Was hast du erwartet? – chux

Antwort

0

zu arbeiten, weil, wenn n = 0, Schleife wird nicht eingegeben. Das druckt den genauen Wert m hat. Ein Programm würde kein Problem auf magische Weise lösen, solange du es nicht beherrschst.

+0

Versuchen Sie, das Zitat sorgfältig zu lesen. Ist die hervorgehobene Bedingung für 'gcd (x, 0)', 'x! = 0' erfüllt? – EOF

+1

Ich bin jetzt vielleicht ein alter Mann, aber ich erinnere mich noch an die Zeit, als in der Grundschule Rechnen mit Brüchen gelernt wurde. Und das Leseverständnis war - wie soll ich sagen - auch etwas höher. * seufz * – deamentiaemundi

+0

oh mein Fehler. Ich muss hoch gewesen sein: / – Shahid

1

Sie vergeben 'n' 0 und daher wird die Schleife nie ausgeführt. m bleibt als 10