Non il ne marche pas (du tout ;p) mais c'était pour expliquer un peu mieux ma pensée (qui était en gros : utiliser une boucle et des décalages).Envoyé par DaP
Non il ne marche pas (du tout ;p) mais c'était pour expliquer un peu mieux ma pensée (qui était en gros : utiliser une boucle et des décalages).Envoyé par DaP
Et comment crois-tu que le processeur compare eax et ebx ? Avec un test pardi.
Pour le maximum, on est coincé, je dirais même mathématiquement, à utiliser quelque part un test.
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
Je n'ai pas été assez explicite, je parlais d'éviter les branchements. CMP fait juste une soustraction sans sauvegarder le résultat et positionne les flags de statut. Voilà un exemple qui n'utilise aucune instruction de test (SETA copie !CF dans CL) :
L'équivalent en C :Code:xor ecx, ecx mov eax, 10 ; a mov ebx, 20 ; b cmp eax, ebx seta cl ; ecx = (a > b) ? 1:0 neg ecx ; FF:0 sub eax, ebx and ecx, eax ; a-b:0 add ecx, ebx ; a:b
Tu relances ?Code:int a, b, max; max = (-(a > b) & (a-b)) + b;
Bon les setcc à la place des branchements c'est un peu tricher quand même pour ce genre de truc mais bon ;-)
Si on veut le faire avec des opcodes plus vieillot, la valeur absolue peut se calculer comme ça (idiomatique, j'ai rien inventé):
Question suivante alors?Code:cdq xor eax, edx sub eax, edx
Mmmh... Allez...
Comment faire une division par 3... sans division?
Edit : Entière la division hein.
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
DaP, d’après toi, a>b est un test, ou pas ? :mrgreen:
Il suffit de voir la définition de la valeur absolue pour voir qu’on est coincé et qu’on devra faire appel à un test, de gré ou de force, à un moment ou à un autre.
Pour obtenir le reste, on peut additionner tous les chiffres, comme pour la preuve par neuf.
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
Solution bourrine (entrée dans EAX, sortie dans EDX) :
Code:mov edx, 0AAAAAAABh mul edx shr edx, 1Bien sûr, mais c'était un peu évident que je parlais de ne pas faire de branchement pour que le programme ne suive qu'un chemin quoi qu'il arrive. Pour le (a > b), ça dépend de ce que le compilateur en fait.Envoyé par ducon
Bah meilleure solution, non, c'est un truc clairement convolué mais comme le disait ducon:Envoyé par DaP
et tu peux calculer le abs avec leCode:max(a, b) = ((a+b) + abs(b-a))/2 min(a, b) = ((a+b) - abs(b-a))/2
Bon c'est tordu hein... mais sauf erreur ça tourne dès le 386Code:cdq xor eax, edx sub eax, edx
(et bien joué pour le div by 3, pratique pour trouver un nombre de triangles à partir du nombre de vertex)
A toi de balancer des questions DaP!
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
Ben je comptais sortir ça mais je n'arrive pas à le compiler, et j'ai pas trop envie d'essayer de comprendre non plus.
Alors une connue : comment interchanger deux valeurs sans passer par une variable intermédiaire ?
Bon je réponds pas sur celle là, quelqu'un doit bien connaître ça dans le coin!Envoyé par DaP
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
Je vois bien un truc du genre :
a = valeur1
b = valeur2
a+b=b
b-a=a
b-a=b
En algo complet
edit : ça me fait penser aux Tours de Hanoï ...
edit 2 : je suis ARL moi, pas Dev boudiou ^^
Ma chaine Youtube qu'elle est bien : https://www.youtube.com/channel/UCHP...eCmmZB18XC98VQ
Houla, je passe mon tour ! je suis juste un gros curieux en prog, je n'ai pas de onnaissances particulières ! je suivrais le topic avec plaisir, mais je ne me sens pas capable de créer une énigme, dslEnvoyé par DaP
Ma chaine Youtube qu'elle est bien : https://www.youtube.com/channel/UCHP...eCmmZB18XC98VQ
Code:int zongo(int n) { { int result = n,i; for(i=2;i*i <= n;i++) { if (n % i == 0) result -= result / i; while (n % i == 0) n /= i; } if (n > 1) result -= result / n; return result; } }
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
J'ai beau relire ce truc, j'en ai aucune idéeEnvoyé par ducon
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
C’est un truc de matheux.
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
Si n est premier, ça renvoie n-1.Envoyé par ducon
En fait ça pourrait presque être un truc qui renvoie le plus gros facteur mais non.
J'arrive pas à capter ce que ça fait.
Un p'tit indice?
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
Exact.Envoyé par Tramb
Tu connais beaucoup de fonctions qui renvoient n−1 si n est premier ?
Et si n est composé du produit de deux nombres premiers ? Ou alors d’une puissance d’un seul nombre premier ?J'arrive pas à capter ce que ça fait.
Un p'tit indice?
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
putain les gars arretez tout quoi
T’es un geek, toi ?
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
quand je vois ce topic, je me dis que finalement non
Mmmh! Ca a l'air de faire ça:Envoyé par ducon
Soit n = produit sur i des ai^pi (ai, premiers)
zongo(n) = produit sur i des (ai-1)*ai^(pi-1)
Ah. Ca a l'air d'être l'indicateur d'Euler en fait après un peu de recherche sur le net, le nombre de nombres inférieurs premiers avec n!
(Disclaimer : on va dire que l'arithmétique est pas ma compétence la plus forte en maths )
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
C’est ça.
Ça s’appelle l’indicatrice d’Euler, et c’est noté ϕ(n).
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
Ah ben je venais de voir çaEnvoyé par ducon
(Cool on peut copier des caractères chelous sur le forum : ط بقناة العربية يقدم على مدار الساعة ال)
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
Ce qui veut dire ?Envoyé par Tramb
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
que tu ne comprend pas les caracteres chelous :smile:
...et que j'ai copié du texte de google sans savoir ce que c'était.Envoyé par elpaulo
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
En fait, cette fonction compte le nombre de nombres plus petits que n qui sont premiers avec n, c’est-à-dire sans facteur commun avec n.
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
Je peux vous trouver une autre fonction mathématique, si vous voulez.
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture