Divisibilité et modulo


  • G

    Bonjour,
    Je fait de la programmation dans mon temps libre, du java. Et étant en deuxième année de deug math-informatique, j'ai aussi des maths au programme.
    Je me suis lancé dans un projet consistant en l'élaboration d'un programme de maths, traitement des matrices, résolution de systemes divers, en fait surtout de l'algèbre.
    Mais tout a un début. Pour effectuer la programmation (i.e l'automatisation) de la résolution d'un systeme d'équations, il faut considérer tout d'abord la base de l'algèbre: les nombres entiers relatifs.
    Ayant écrit de nombreuses lignes de code, je suis maintenant bloqué sur un problème qui pourrait sembler enfantin: Soient a,b dans Z. Comment automatiser le calcul de a div b? Comment automatiser le calcul de a mod b?
    Autrement dit existe-t-il une formule donnant le résultat de la division entière de a par b dans Z? En existe-t-il une donnant le reste de la division entière de a par b dans Z?
    J'insiste sur Z car on ne trouve que rarement une calculatrice ou un programme donnant q,r dans Z tels que: a = b x q + r, avec a ou b dans Z.
    foi/


  • Zorro

    Bonjour,

    Si mes souvenirs ne sont pas trop loin
    pour diviser a par b et trouver q le quotient et r le reste

    on a q = partie entiere de (a/b)

    et r = a - qb

    à vérifier car alzheimer me guette


  • G

    Les égalités que tu me donnes marchent. Mais uniquement si a et b sont dans N.
    Prenons a=-13 et b=-4, ça nous donne:
    -13 = -4 x 4 + 3
    Donc q=4 et r=3.
    ...


  • Zorro

    je dois avouer que je ne sais plus ce que donne la division enclidienne pour les négatifs.

    parce que -13 = (3)*(-4) - 1

    q = partie entière de (-13)/(-4) = 3

    et r = -13 - (3)*(-4) = -1 ne conviennent pas

    En effet dans Z le reste doit être positif ou nul et inférieur à valeur absolue de b


  • B

    Salut !!

    Visiblement (il faudra tester après), il y a problème quand le reste est négatif.
    Dans ce cas là, avant de renvoyer le résultat de la division euclidienne, tu testes le signe de ton reste.
    S'il est positif ou nul, tu peux renvoyer, sinon tu rajoutes la valeur absolue de ton dividande à ton reste ( le "nouveau" reste sera alors positif et bien compris entre 0 et la valeur absolue de ton dividande) et tu en déduis le quotient q=(a-r)/b.
    Je ne suis absolument pas sûr que ça marche, sinon en Java il ya la méthode "modulo" qui s'ecrit a % b mais je ne sais pas comment elle marche pour les entiers négatifs.


Se connecter pour répondre