Bonjour,
Je suis surpris d'une erreur d'addition dans le programme C ci dessous.
Le but du programme est de trouver le nombre de fibonnaci tel que F(x) mod 2^32 == 0.
Mon problème vient d'une addition de float particulière...
normalement a la position 37 nous devrions avoir 24157817.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 35 => 9227465 : mod = 9227465.0 36 => 14930352 : mod = 14930352.0 37 => 24157816 : mod = 24157816.0
voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <stdio.h> #include <stdlib.h> #include <math.h> int main (void) { float f,x; float f1,f2; int stop = 0; float ans = pow(2,32); f1 = 0; f2 = 1; for(x=37;stop!=1;x++) { f = f1+f2; if (fmod(f,ans) == 0) stop =1; printf("%.0f => %.0f : mod = %.01f\n",x,f, fmod(f,ans)); f2 = f1; f1 = f; } return 0; }
Partager