Problème de l'arrêt (was: Que fait ce programme ?)

Liste des GroupesRevenir à fs maths 
Sujet : Problème de l'arrêt (was: Que fait ce programme ?)
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.sci.maths fr.comp.lang.python
Suivi-à : fr.sci.maths
Date : 30. Sep 2022, 12:53:49
Autres entêtes
Organisation : There's no cabale
Message-ID : <th6hru$248k$1@cabale.usenet-fr.net>
References : 1
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.1
[diapublication, suivi vers fr.sci.maths seul]

Bonjour,

Le 30/09/2022 à 07:17, ast avait écrit :
 
def f(m, n):
   while n:
     m, n = m ^ n, (m & n) << 1
   return m

Comme l'écrivait Michel Talon, cette fonction retourne simplement
la somme des entiers m et n, du moins cela fonctionne pour tous les
entiers positifs. À chaque tour de boucle, on retrouve dans m la
somme bit à bit des nombres m et n *sans tenir compte des retenues*,
et dans n la somme de toutes les retenues. Au bout d'un petit
nombre de tours de boucle, il n'y a plus aucune retenue à faire, et
alors le nombre n vaut 0 tandis que le nombre m contient le résultat
attendu à savoir la somme des nombres m et n de départ.

Je voudrais maintenant étendre la question d'ast, en faisant suivre
vers fr.sci.maths seul car ça n'a plus rien de spécifique à python.

Lorsque l'un des nombres est négatif, il arrive que l'algorithme ne
s'arrête jamais. Par exemple lorsque m vaut -1 et que n vaut n'importe
quel nombre strictement positif.

Ma question est alors de déterminer pour quelles valeurs de m et n
le programme s'arrête et pour quelles valeurs il ne s'arrête jamais.

Question subsidiaire : lorsque le programme s'arrête, combien de
tours de boucle a-t-il réalisés ?


Précision pour la représentation des nombres en binaire, un nombre
positif comporte « à gauche » une infinité de chiffres binaires
valant zéro, tandis que les nombres négatifs ont une infinité de
chiffres à 1.

Exemples :
  3 = ...0000011
  2 = ...0000010
  1 = ...0000001
  0 = ...0000000
 -1 = ...1111111
 -2 = ...1111110
 -3 = ...1111101
 -4 = ...1111100


--
Olivier Miakinen

Date Sujet#  Auteur
30 Sep 22 * Que fait ce programme ?14ast
30 Sep 22 +* Re: Que fait ce programme ?4Olivier Miakinen
30 Sep 22 i+- Re: Que fait ce programme ?1Olivier Miakinen
30 Sep 22 i`* Re: Que fait ce programme ?2Olivier Miakinen
2 Oct 22 i `- Re: Que fait ce programme ?1ast
30 Sep 22 +- Re: Que fait ce programme ?1Michel Talon
30 Sep 22 +* Problème de l'arrêt (was: Que fait ce programme ?)7Olivier Miakinen
30 Sep 22 i+* Re: Problème de l'arrêt (was: Que fait ce programme ?)4maixxx
30 Sep 22 ii`* Re: Problème de l'arrêt3Olivier Miakinen
1 Oct 22 ii `* Re: Problème de l'arrêt2Michel Talon
1 Oct 22 ii  `- Re: Problème de l'arrêt1Olivier Miakinen
30 Sep 22 i`* [Ma réponse] Re: Problème de l'arrêt2Olivier Miakinen
30 Sep 22 i `- Re: [Ma réponse] Re: Problème de l'arrêt1Olivier Miakinen
1 Oct 22 `- Bis: Que fait ce programme ?1Olivier Miakinen

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal