|| || a <= 20 et b <= 20 || A = a*b || B = a+b || Liste des valeurs possibles pour A, ce sont tous les a*b possibles avec a et b dans [2,20] : % for a in `seq 2 20` ; do for b in `seq 2 20` ; do echo `expr $a '*' $b` ; done ; done | sort -n | uniq A := { 4 6 8 9 10 12 14 15 16 18 20 21 22 24 25 26 27 28 30 32 33 34 35 36 38 39 40 42 44 45 48 49 50 51 52 54 55 56 57 60 63 64 65 66 68 70 72 75 76 77 78 80 81 84 85 88 90 91 95 96 98 99 100 102 104 105 108 110 112 114 117 119 120 121 126 128 130 132 133 135 136 140 143 144 150 152 153 154 156 160 162 165 168 169 170 171 176 180 182 187 190 192 195 196 198 200 204 208 209 210 216 220 221 224 225 228 234 238 240 247 252 255 256 260 266 270 272 280 285 288 289 300 304 306 320 323 324 340 342 360 361 380 400 } Liste des valeurs possibles pour B, ce sont tous les a+b possibles avec a et b dans [1,20] : % for a in `seq 2 20` ; do for b in `seq 2 20` ; do echo `expr $a + $b` ; done ; done | sort -n | uniq B := { 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 } || || A dit « je ne peux pas trouver a et b ! » || Cela signifie que A n'est pas le produit de deux nombres premiers ou qu'on ne peut écrire A sous la forme a*b que d'une seule manière dans [2,20] On élimine donc les nombres dans A qui n'on qu'une seule décomposition, d'où : % for a in `seq 2 20` ; do for b in `seq 2 20` ; do echo `expr $a '*' $b` ; done ; done | sort -n | uniq -c | grep -v '[12][^0-9]' | awk '{ print $2 }' A := { 12 16 18 20 24 28 30 32 36 40 42 45 48 54 56 60 64 70 72 80 84 90 96 100 108 112 120 126 140 144 160 180 240 } || || B dit « je le savais ! » || Cela signifie que pour tous (n,p) tels que n+p = B, n et p ne sont pas tous deux premiers, sinon B ne pouvait pas être certain que A ne pouvait pas trouver. On élimine donc les B tels qu'il existe n et p premiers tels que n+p = B : 4: 2 2 5: 2 3 6: 3 3 7: 2 5 8: 3 5 9: 2 7 10: 3 7 11 12: 5 7 13: 2 11 14: 3 11 15: 2 13 16: 3 13 17 18: 5 13 19: 2 17 20: 3 17 21: 2 19 22: 3 19 23 24: 5 19 25: 2 23 26: 3 23 27 28: 5 23 29 30: 7 23 31: 2 29 32: 3 29 33: 2 31 34: 3 31 35 36: 5 31 37 38: 7 31 39: 2 37 40: 3 37 B := { 11 17 23 27 29 35 37 } || || A dit « alors j'ai trouvé ! » || Cela signifie qu'il existe un et un seul couple (a,b) tel que a*b = A et tel que pour tous les (n,p) tels que n+p = a+b, n et p ne sont pas tous deux premiers. En d'autres termes, il existe un et un seul couple (a,b) tel que a*b = A et tels que a+b est dans la liste de B qu'on a trouvés. On parcourt notre liste de A et on élimine ceux dont aucune décomposition a*b n'est telle que a+b est dans B, et on élimine ceux dont deux décompositions au moins sont telles que a+b est dans B. 12: 2 2 3 (2,6) (3,4) 8 7 16: 2 2 2 2 (2,8) (4,4) 10 8 18: 2 3 3 (2,9) (3,6) 11 9 20: 2 2 5 (2,10) (4,5) 12 9 24: 2 2 2 3 (2,12) (3,8) (4,6) 14 11 10 28: 2 2 7 (2,14) (4,7) 16 11 30: 2 3 5 (2,15) (3,10) (5,6) 17 13 11 32: 2 2 2 2 2 (2,16) (4,8) 18 12 36: 2 2 3 3 (2,18) (4,9) (6,6) 20 13 12 40: 2 2 2 5 (2,20) (4,10) (5,8) 22 14 13 42: 2 3 7 (3,14) (6,7) 17 13 45: 3 3 5 (3,15) (5,9) 18 14 48: 2 2 2 2 3 (3,16) (4,12) (6,8) 19 16 14 54: 2 3 3 3 (3,18) (6,9) 21 15 56: 2 2 2 7 (4,14) (7,8) 18 15 60: 2 2 3 5 (3,20) (4,15) (5,12) (6,10) 23 19 17 16 64: 2 2 2 2 2 2 (4,16) (8,8) 20 16 70: 2 5 7 (5,14) (7,10) 19 17 72: 2 2 2 3 3 (4,18) (6,12) (8,9) 22 18 17 80: 2 2 2 2 5 (4,20) (5,16) (8,10) 24 21 18 84: 2 2 3 7 (6,14) (7,12) 20 19 90: 2 3 3 5 (6,15) (9,10) 21 19 96: 2 2 2 2 2 3 (6,16) (8,12) 22 20 100: 2 2 5 5 (5,20) (10,10) 25 20 108: 2 2 3 3 3 (6,18) (9,12) 24 21 112: 2 2 2 2 7 (7,16) (8,14) 23 22 120: 2 2 2 3 5 (6,20) (8,15) (10,12) 26 23 22 126: 2 3 3 7 (7,18) (9,14) 25 23 140: 2 2 5 7 (7,20) (10,14) 27 24 144: 2 2 2 2 3 3 (8,18) (9,16) (12,12) 26 25 24 160: 2 2 2 2 2 5 (8,20) (10,16) 28 26 180: 2 2 3 3 5 (9,20) (10,18) (12,15) 29 28 27 240: 2 2 2 2 3 5 (12,20) (15,16) 32 31 A := { 18 24 28 42 70 72 112 120 126 140 } Ou en explicitant la décomposition trouvée par A : A := { 2*9 3*8 4*7 3*14 7*10 8*9 7*16 8*15 9*14 7*20 } On trouve donc le nouvel ensemble B : A := { 2+9 3+8 4+7 3+14 7+10 8+9 7+16 8+15 9+14 7+20 } B := { 11 17 27 } || || B dit « alors moi aussi ! » || Cela signifie qu'à partir du nombre B, il n'y a qu'une seule façon de retrouver a et b. Si B = 11, il y a au moins deux solutions (2*9 et 3*8). Si B = 17, il y a au moins deux solutions (7*10 et 8*9). Par contre pour B = 27 on n'a qu'une seule possibilité, 7*20. Donc B = 27 et A = 140 Conclusion : (a,b) = (7,20)