Wie finde ich den Rest einer Division in C?

Lesezeit: 2 Minuten

Benutzer-Avatar
Vivek

Wie findet man am besten heraus, ob die Division zweier Zahlen einen Rest ergibt? Nehmen wir zum Beispiel, ich habe ein Array mit den Werten {3,5,7,8,9,17,19}. Jetzt muss ich den perfekten Teiler von 51 aus dem obigen Array finden. Gibt es eine einfachere Möglichkeit, dies zu lösen?

  • Ich finde die Reichweite {3,5,7,8,9,17,19} ziemlich verdächtig. Es fast Sieht so aus, als würden Sie hier Primzahlen verwenden, aber 8 ist keine Primzahl und 11 und 13 fehlen …

    – Dunkler Staub

    9. August 2011 um 10:05 Uhr

Du kannst den … benutzen % Operator, um den Rest einer Division zu finden und das Ergebnis mit zu vergleichen 0.

Beispiel:

if (number % divisor == 0)
{
    //code for perfect divisor
}
else
{
    //the number doesn't divide perfectly by divisor
}

  • Modul und Erinnerung sind für negative Zahlen unterschiedlich: stackoverflow.com/questions/13683563/…

    – Calandoa

    19. Januar 2016 um 14:57 Uhr


  • Guter Punkt, aber ich sehe nicht, wie das die Prüfung auf perfekte Teilung ändert

    – Mircea Nistor

    20. Januar 2016 um 14:44 Uhr

  • Die Antwort auf die Frage ist in Ordnung, aber das C ist sehr unscharf in Bezug auf die Beziehung zwischen %-, Modulo- und Restoperatoren, und Ihre Aussage war nur ein bisschen ungenau, daher habe ich nur einen Link hinzugefügt, um diesen Punkt zu verdeutlichen.

    – Calandoa

    21. Januar 2016 um 13:27 Uhr

Benutzer-Avatar
MByD

Verwenden Sie den Modulo-Operator %es gibt den Rest zurück.

int a = 5;
int b = 3;

if (a % b != 0) {
   printf("The remainder is: %i", a%b);
}

  • @Joey – warum hast du das Beispiel entfernt?

    – MByD

    9. August 2011 um 9:27 Uhr

  • Ich tat es nicht; Ich habe nur einen Tippfehler korrigiert und das Operatorzeichen hinzugefügt. Könnte sein, dass hier gleichzeitige Bearbeitungen kollidierten. Darin ist SO noch schlechter als MediaWiki. Dh als ich es bearbeitet habe, habe ich nur den einen Satz gesehen und auch keine Benachrichtigung über gleichzeitige Änderung bekommen. Es tut uns leid :/

    – Joey

    9. August 2011 um 9:34 Uhr


  • Entschuldigung … Ich dachte, Sie hätten ein Problem mit meinem Beispiel … Und danke!

    – MByD

    9. August 2011 um 9:38 Uhr


  • Aber es ist invertiert? zB: 12 ​​% 8 = 4, so sollte es sein. aber 11 % 8 = 3, wenn es gleich 5 sein sollte.

    – MarcusJ

    22. Juni 2015 um 13:08 Uhr


  • @MarcusJ – 11 % 8 gleich 3, nicht 5. as 11 = (8 * 1) + 3.

    – MByD

    22. Juni 2015 um 14:08 Uhr

Alle obigen Antworten sind richtig. Geben Sie einfach Ihren Datensatz an, um den perfekten Teiler zu finden:

#include <stdio.h>

int main() 
{

int arr[7] = {3,5,7,8,9,17,19};
int j = 51;
int i = 0;

for (i=0 ; i < 7; i++) {
    if (j % arr[i] == 0)
        printf("%d is the perfect divisor of %d\n", arr[i], j);
}

return 0;
}

  • Das OP sollte wahrscheinlich klären, ob 3 oder 9 in diesen Fällen als perfekter Teiler betrachtet werden sollten. Ich nehme 9 an, weil es sonst keinen Sinn macht, dass es im Array ist. In diesem Fall müssten Sie in umgekehrter Reihenfolge schleifen.

    – Blechmann

    9. August 2011 um 10:20 Uhr

1216200cookie-checkWie finde ich den Rest einer Division in C?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy