Dlzlogic a écrit:Bof, y'a pas mal de solutions, j'ai pas algobox, je sais pas si j'ai le droit en C ?
Rectification, sauf erreur, il n'y a que 4 solutions indépendantes.
Dlzlogic a écrit:Donc, j'ai gagné, je peux donner la réponse ?
Ce qui m'intéresserait, c'est trouver une solution mathématique, parce qu'avec un programme c'est trop facile.
Par contre, je n'arrive pas à montrer qu'il n'y en a que 4.
Oups! j'en ai trouvé deux de plus.
... j'en suis déjà à 18, je continue ?
chan79 a écrit:Si ça se trouve, quelqu'un va nous prouver qu'il y a une infinité de solutions
j'ai trouvé en premier(6,17,102)
ce qui est sûr, c'est qu'au moins un des trois nombres doit être divisible par 17
chan79 a écrit:Le plus petit cardinal infini est bien celui de l'ensemble des entiers naturels ?
for a=5:12
for b=a:34*a/(4*a-17)
c=(17*a*b)/(b*(4*a-17)-17*a);
if c<0
continue
else
if 4*a*b*floor(c)-17*(a*b+b*floor(c)+a*floor(c))==0
a
b
c
disp('===')
end
end
end
end
fatal_error a écrit:slt
pour ma part, je n'en trouve que 4:
a = 5
b = 30
c = 510
===
a = 5
b = 34
c = 170
===
a = 6
b = 15
c = 510
===
a = 6
b = 17
c = 102
On peut supposer a=5
on réitère la minoration par la borne sup pour a fixé :
4/17-1/a <= 2/b
on déduit b<=E(34*a/(4*a-17))
et enfin on calcule c=(17*a*b)/(b*(4*a-17)-17*a)
il s'agit de conserver les valeurs de c entières telles que l'équation 4/17=1/a+1/b+1/c soit valide
code octave
- Code: Tout sélectionner
for a=5:12
for b=a:34*a/(4*a-17)
c=(17*a*b)/(b*(4*a-17)-17*a);
if c<0
continue
else
if 4*a*b*floor(c)-17*(a*b+b*floor(c)+a*floor(c))==0
a
b
c
disp('===')
end
end
end
end
note: l'exclusion sur c<0 m'intrigue, pourquoi ya t il des c<0??, mais chui un peu torché, alors je passe
Exact, d'ailleurs quand j'ai écrit mon message, j'avais un petit doute, mais ça m'amusait tellement cette relation d'ordre dans les infinis que j'ai oublié d'être rigoureux.SaintAmand a écrit:Non, il y en a autant. Regarde l'application. Elle est injective et son image est l'ensemble des carrés parfaits.
int main()
{
for (int a=1; a< 10000; a++)
{
for (int b=a; b<10000; b++)
{
for (int c=b; c<10000; c++)
{
if (a*b*c*4 == (a*b+b*c+a*c)*17)
{
printf("trouvé : a=%d, b=%d, c=%d\n",a,b,c);
}
}
}
}
system("pause");
return 0;
}
Bien sûr c'est pas fini.trouvé : a=5, b=30, c=510
trouvé : a=5, b=34, c=170
trouvé : a=6, b=15, c=510
trouvé : a=6, b=17, c=102
trouvé : a=416, b=2816, c=7424
trouvé : a=427, b=1950, c=9142
trouvé : a=664, b=7032, c=9036
trouvé : a=672, b=5456, c=7968
trouvé : a=744, b=5032, c=9820
trouvé : a=776, b=5644, c=8392
trouvé : a=784, b=6640, c=8305
trouvé : a=1040, b=4848, c=6211
trouvé : a=1092, b=5748, c=7738
trouvé : a=1148, b=5812, c=6955
trouvé : a=1172, b=2676, c=3790
trouvé : a=1175, b=7106, c=8786
trouvé : a=1460, b=4404, c=6710
trouvé : a=1480, b=6863, c=9976
trouvé : a=1568, b=7840, c=8592
trouvé : a=1872, b=2096, c=7150
trouvé : a=2152, b=5146, c=9144
trouvé : a=2160, b=6504, c=9200
trouvé : a=2240, b=3136, c=8592
trouvé : a=2274, b=2956, c=4652
trouvé : a=2352, b=3664, c=4878
trouvé : a=2466, b=3541, c=4074
trouvé : a=2472, b=2480, c=2992
trouvé : a=2700, b=4968, c=6504
trouvé : a=2744, b=7288, c=7860
trouvé : a=2881, b=6166, c=9878
trouvé : a=2914, b=4200, c=7480
trouvé : a=2936, b=5116, c=7384
Dlzlogic a écrit:Exact, d'ailleurs quand j'ai écrit mon message, j'avais un petit doute, mais ça m'amusait tellement cette relation d'ordre dans les infinis que j'ai oublié d'être rigoureux.
Pour le sujet lui même; voila le code qui produit le résultat suivant. Bien-sûr, ce n'est qu'une partie de l'infinité des résultats.
- Code: Tout sélectionner
int main()
{
for (int a=1; a< 10000; a++)
{
for (int b=a; b<10000; b++)
{
for (int c=b; c<10000; c++)
{
if (a*b*c*4 == (a*b+b*c+a*c)*17)
{
printf("trouvé : a=%d, b=%d, c=%d\n",a,b,c);
}
}
}
}
system("pause");
return 0;
}
Bien sûr c'est pas fini.
Concernant le code octave, personnellement, je trouve bizarre de traiter des entiers avec des flottants, et dans tout les cas, la comparaison de flottants avec le signe "==" a, en gros, une chance sur 2 de donner le résultat attendu. La raison est que deux groupes d'octets sont égaux si tous les bits sont égaux. Or, s'il y a eu des opérations arithmétiques, il y a une chance sur deux que le dernier bit ne soit pas pareil, puisqu'il y a eu forcément un arrondi.
Peut-être floor(c+0.5) donnerait toujours l'entier le plus proche, mais j'en sais rien. Si je traite des entiers, je travaille avec des entiers.
Ma vérification avec une calculette n'a rien donné.trouvé : a=5, b=30, c=510
trouvé : a=5, b=34, c=170
trouvé : a=6, b=15, c=510
trouvé : a=6, b=17, c=102
trouvé : a=744, b=5032, c=9820
trouvé : a=776, b=5644, c=8392
trouvé : a=1175, b=7106, c=8786
trouvé : a=2472, b=2480, c=2992
trouvé : a=2914, b=4200, c=7480
Peut-être que la machine ne peut plus comparer des nombres trop grands ?
Par ailleurs, comme 17(bc+ac+ab)=4abc et que 17 est premier, l'un au moins des trois nombres a, b et c doit être divisible par 17
a b c 17(ab+ac+bc) 4abc DIFF
5 30 510 306000 306000 0,00E+00 OK
5 34 170 115600 115600 0,00E+00 OK
6 15 510 183600 183600 0,00E+00 OK
6 17 102 41616 41616 0,00E+00 OK
744 5032 9820 1027890176 147056778240 -1,46E+11
776 5644 8392 990358528 147019246592 -1,46E+11
1175 7106 8786 1378809072 293436585200 -2,92E+11
2472 2480 2992 356098048 73370542080 -7,30E+10
2914 4200 7480 1112675840 366184896000 -3,65E+11
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :