Bonjour,
Puisque les programmeurs aiment à utiliser leur art pour résoudre des énigmes où, souvent, seuls les calculs "à la main" sont escomptés, je leur propose cette recherche qui leur permettra de s'approprier une réplique cornélienne(*) du Cid :
" A vaincre sans péril, on triomphe sans gloire. "
Tout d'abord, des p'tits exemples pour bien comprendre :
(6) : 15.26 = 43
(8) : 17.85 = 23.46
(10) : 81.610 = 27.43.95
Vous constatez, sur ces exemples, des égalités ne faisant intervenir que les n premiers entiers sous forme de produits et de puissances.
La question est toute simple :
Parvenez-vous à trouver, si elles existent, des expressions pour n=20 utilisant donc les nombres de 1 à 20 ?
La formule consacrée - s'il y a plusieurs solutions, elles seront toutes fournies - ne devraient pas poser de problèmes à vos algorithmes affûtés...
Bonne programmation !
Philoux
(*) : à propos de Pierre Corneille, j'ai reçu ces jolis vers, tout en alexandrins :
À Pierre CORNEILLE,
Je me désole, Pierre, qu'un trivial chanteur,
Prenne chez les jeunes ce qui revient au coeur…
Tu peux en alexandrins dire tes sentiments…
Depuis toujours je t'envie d'avoir ce talent
D'exprimer toute idée dans un verbe qui balance
Et procure à l'esprit une grande jouissance.
Avant l'heure tu as illustré la "Langue Belle"
Le français, qui parmi toutes les langues est celle
Qui exprime le mieux les nobles sentiments
De l'honneur, du devoir et du déchirement
Entre l'extrême passion et le rude devoir
Qui révèle les héros en butte au désespoir.
Tu as su illuminer le fond par la forme
Ainsi, ta langue sort de la courante norme.
Tes écrits forment la base de notre culture ;
Je souhaite que chez les jeunes ton souvenir dure
Et que dans les lycées ta place soit meilleure
Afin que tu reprennes celle de l'imposteur.
KAP
à ton avis, au vu des exemples...
Philoux
Dans l'absolu, master_och, tu as raison car ma phrase :
Vous constatez, sur ces exemples, des égalités ne faisant intervenir que les n premiers entiers sous forme de produits et de puissances.
n'indique pas explicitement que les dits n premiers entiers n'apparaissent qu'une seule fois.
Mes excuses alors pour 13:22
Philoux
Bonjour,
Est-ce que master_och serait une fille ?! J'ai voulue juste être sûre... et tout le monde était déjà au courant (sauf moi ), ou c'est une faute d'orthographe... ?
Estelle
Bonjour
Les Eniac et autres Cray tournent toujours ?
Philoux
Bonjour,
Voilà un début de réponse :
On a obligatoirement 7-11-13-14-17-19 comme exposant.
Voici une solution recherchée ou 5-10-15-20 sont aussi exposant.
Ce n'est qu'unne solution, j'imagine qu'il y en a pas mal d'autres :
6^11 x 12^13 x 2^5 x 8^7 x 18^17 = 1^14 x 4^10 x 16^15 x 3^20 x 9^19
Merci pour cette énigme et pour ceux qui ont le courage de chercher toutes les solutions...
Bravo Savoie!! Mais est ce que tu peux nous expliquer pourquoi 7 doit être obligatoirement en exposant
Question subsidiaire :
Quelles sont les solutions les plus dissymétriques, à savoie (pardon savoir) celles qui sont le plus éloignées de produit(5 termes u^v) = produit(5 termes p^q) ?
Philoux
Salut Philoux,
Par curiosité : t'as la solution de ton énigme ? (oui/non)
Il faut trouver qqch pour l'algo (une astuce, genre celle de savoie), pcq c'est presque un problème NP-difficile, non?
Salut enzo
Par curiosité : t'as la solution de ton énigme ? (oui/non)
J'ai DES solutions sans être certain d'avoir LES solutions...
...un problème NP-difficile, non?
Je ne sais pas ce que celà signifie
Philoux
Pour Master Och : si tu me pose cette question concernant 7, c'est que tu as compris pourquoi 11 13 17 et 19 sont exposants. Ils sont premiers et il n'ont pas de multiple inférieur à 20. Donc on ne peut pas les avoir en non-exposant (est-ce que cela a un autre nom?) d'un seul côté de l'égalité.
Reste le cas de 7 et de 14. Ils sont les deux seuls à avoir 7 en facteur premier. Donc s'ils ne sont pas exposant, on les trouve de chaque côté de l'égalité. A chacun de ces deux nombre on applique un exposant (différent car on utilise 1 seul fois chaque nombre entre 1 et 20). Ce qui fait que d'un côté de l'égalité, si lon fait la décomposition en facteur premier du giga-nombre que je n'ose pas calculer, on a notamment 7^a, et de l'autre 7^b avec a et b différents. C'est impossible donc 7 et 14 sont exposants.
C'est d'ailleurs pour éviter des calculs trop compliqués que dans ma solution, j'ai mis les multiples de 5 en exposant. Mon giga-nombre de chaque côté de l'égalité n'a ainsi plus que 2 et 3 dans la décomposition en facteur premier, ce qui rend la recherche plus facile.
Pour Philoux : dire que j'avais cherché une solution symétrique...
on a notamment 7^a, et de l'autre 7^b avec a et b différents. C'est impossible donc 7 et 14 sont exposants.
Bien vu !
dans ma solution, j'ai mis les multiples de 5 en exposant
alors une soluce non symétrique avec 5 en non-exposant
1519 . 1011 . 167 . 186 = 517 . 2013 . 914 . 84 . 123 . 21
Bonne poursuite de recherche...
Philoux
Bonsoir,
Je me trompe peut-être, mais il me semble qu'en cherchant la solution la plus dissymétrique possible, il n'existe aucune solution avec 1 nombre + son exposant dun côté et tous les autres de l'autre (ça c'est évident), mais il n'existe pas non plus de solution avec 2 nombres d'un côté (et leur exposant) et 8 de l'autre.
Le minimum serait donc 3 d'un côté, 7 de l'autre.
Une solution à 3/7 avec un 1020...
Philoux
Bonjour,
J'ai cherché hier soir, et je confirme qu'une solution à 2 / 8 n'existe pas.
A moins que je ne me sois trompé, mais là, c'est aux programmeurs de faire tourner leur engin pour balayer toutes les solutions...
Salut savoie
... c'est aux programmeurs de faire tourner leur engin pour balayer toutes les solutions...
Un ami, que je ne dénoncerai pas , m'a dit par mail qu'en effet, les programmeurs étaient plus prompts à "faire tourner leur engin" pour chercher des soluces où la recherche cérébrale uniquement était requise (plus papier/crayon) que de relever des défis où leur art était obligatoirement requis.
Je relativise :
- pour toi, qui a trouvé des soluces à la main sur ce type de pb,
- pour master_och, qui a tenté (ou tente toujours) de relever ces défis.
Philoux qui ne cherche pas à Paul et Mickey !
Salut philoux
En faite si je n'ai pas donné aucune solution jusqu'à maintenant c'est parce que comme je l'ai déjà dis j'essaie de faire un programme qui cherchera toutes les solutions quelque soit n (pas uniquement pour n=20), donc tu peux comprendre pourquoi j'ai pas encore terminer le programme surtout lorsque je te dis qu'on ne peux pas verifier les cas en les calculant (puisque il y en a des cas ou les puissances sont trés élevées) donc on doit faire comprendre au PC comment décomposer le produit en nombres premiers et les propriétés des puissances en plus de quelques autres trucs qui sont trés compliqués, donc la réalisation de ce programme n'est pas aussi simple que tu le crois, et en plus de tout ça je trouve pas beaucoup de temps libre.
En tout cas j'ai bien avancé dans mon programme, en principe je le terminerai demain si je ne rencontrerai pas de nouveaux problemes .
master_och
Ne crois pas que mon post était polémique envers toi ! que nenni ! tu es le seul qui, publiquement, a osé le relever donc je ne vais pas te casser...
En revanche, si tu me permets un conseil dans le cas de génération de pgm (je ne suis pas/plus un expert, loin de là), tu devrais réaliser des routines/des petits pgm en vue de valider des process, sans chercher LE programme final tout de suite (pense à René Descartes... )
Ainsi, tu pourrais valider des concepts/algo pour, par exemple, n<=9 et tenter de généraliser ensuite...
Ce n'est qu'un conseil qui, souvent, porte ses fruits (bien entendu, comme partout, tu pourras trouver des contre-exemples)
Bon courage !
Philoux
Merci pour ton conseil Philoux mais en faite j'ai bien avancé dans mon programme que je ne veux plus reculer.
En tout cas si cela ne marchera pas dés le premier coup j'essayerai de suivre ton consei .
Ok master_och (quelle est l'origine de ton pseudo ? si c'est trop indiscrét, ignore ma question...)
Prends ton temps, tu ne sembles pas avoir de concurrents...
En revanche, et ça pourrait en intéresser certains, pense à modulariser et commenter ton pgm de sorte qu'il soit facilement lisible par les autres mathîliens.
S'il aboutit, n'hésite pas à le poster !
Philoux
Bonour,
Sans être un "concurrent", les problèmes de programmation me passionnent également. Mon outil de prédilection est Java. Je souhaite me pencher sur cette JFF, mais probablement pas dans un futur proche, faute de temps. Ne m'attendez donc pas ! Pour ma part, j'essaierai d'aborder le problème sous l'angle du dénombrement, une autre de mes passions. (Non, non, n'appelez pas les hommes en blanc ).
Nicolas
En faite la premiére fois que j'ai utilisé ce pseudo était dans un serveur d'echec anglais j'ai voulu au début avoir pour pseudo master mais ce dernier était déja utilisé donc j'ai pensé à master of chess et c'est dela où vien le "och" depuis j'ai bien aimé ce pseudo et je l'utilise dans n'importe quel forum.
D'autre part si mon programme "aboutit" comme tu viens dire je peux bien expliqué l'idée que j'ai utilisé pour réaliser le programme, mais se sera trés long de commenter chaque opération que j'ai utilisé dans mon programme car ce dernier est déja trés long sans commentaire.
donc ce que je pourrais faire est d'expliquer mon idée en géneralisant et puis poster le programme pour ceux qui veulent le tester.
Nicolas : ...les problèmes de programmation me passionnent également...
Si c'est le cas, Nicolas, je t'incite à te pencher également sur JFF : nombre 123456789 :*::*::*: sur laquelle master_och planche également...
Ok pour l'explication master_och.
Philoux
Ce n'est pas l'envie qui me manque. Mais il faudrait des journées de 48h.
(ou bien passer moins de temps sur l' !)
Bonsoir
Enfin j'ai terminé ce programme je ne pourrait pas l'expliquer aujourd'hui mais je vais quand même le poster le voilà:
uses wincrt;
type tab=array[1..26] of integer;bi=array[1..26,1..26]of integer;
function ver(n:integer;pr2:tab;n2:integer):boolean;var i:integer;
begin i:=0;repeat inc(i);until(pr2[i ]=n)or(i=n2);if pr2[i ]=n then ver:=false else ver:=true;end;
function pos(t:tab;i:integer):integer;var l:integer;
begin if i=1 then pos:=0
else begin l:=0;repeat inc(l);until(t[l]=t[i ])or(l=i-1);if(t[l]=t[i ])then pos:=l else pos:=0;end;end;
procedure tri(var pr,pui:tab;p:integer);var x,i,j:integer;
begin i:=0;repeat inc(i);if pr[i ]>pr[i+1] then begin j:=i;
repeat x:=pr[i ];pr[i ]:=pr[i+1];pr[i+1]:=x;x:=pui[i ];pui[i ]:=pui[i+1];pui[i+1]:=x;
dec(i);until(pr[i ]<pr[i+1])or(i=0);i:=j;end;until(i=p-1);end;
var n,n1,n2,n3,k,p,j,i,q,l,m,a,b,c,d,h,x,y,ch,nbr:integer;bl:boolean;npr,t,pui,pui1,pr1,pr2,pr,ind:tab;tpr,tpui:bi;
begin
{initialisations}repeat readln(n) until(n in[6..26])and(n mod 2=0);
writeln('si vous voulez obtenir les résultats une par une taper 1 sinon tapez 2: ');readln(ch);
if ch=1 then writeln(' tapez 1 à chaque fois que vous voulez un nouveau résultat');
{pr1 pr2} k:=1;m:=0;pr1[1]:=2;q:=0;for i:=3 to n-1 do begin j:=1;repeat inc(j);until((i mod j)=0)or(j>i div 2);
if i mod j>0 then begin inc(k);pr1[k]:=i;if i>(n div 3)then begin inc(m);pr2[m]:=i;
if 2*i<=n then begin inc(m);pr2[m]:=2*i;end;if q=0 then begin n1:=k-1;q:=1;end;end;end;end;n2:=m;n3:=k;{fin pr1 pr2}
{decomposition}for i:=2 to n do begin if not(ver(i,pr1,n3))then begin tpr[i,1]:=i;tpui[i,1]:=1;npr[i ]:=1;end
else begin a:=0;b:=i;x:=0;repeat inc(x);repeat inc(a);until((i mod pr1[a])=0);l:=0;repeat b:=b div pr1[a];inc(l);
until(b mod pr1[a]>0)or(b=1);tpr[i,x]:=pr1[a];tpui[i,x]:=l;npr[i ]:=x;until(b=1);end;end;{fin decomp} {fin init}nbr:=0;
{étape 1}for j:=1 to(n div 4) do begin i:=0;t[1]:=0;q:=1;repeat inc(i);
if i<j+1 then begin if t[i ]<n-j+i then begin repeat inc(t[i ]);until(ver(t[i ],pr2,n2)or(t[i ]=n-j+i));
if ver(t[i ],pr2,n2) then begin if i=j then t[i+1]:=0 else t[i+1]:=t[i ];end
else if i>1 then begin repeat dec(i);until(t[i ]<n-j+i)or(i=1);if t[i ]<n-j+i then dec(i) else q:=0;end
else q:=0;end
else if i>1 then begin repeat dec(i);until(t[i ]<n-j+i)or(i=1);if t[i ]<n-j+i then dec(i) else q:=0;end
else q:=0;end
else if i<2*j+1 then begin if t[i ]<n then begin repeat inc(t[i ]);until(pos(t,i)=0)or(t[i ]=n);
if (pos(t,i)>0)then i:=i-2 else if i<2*j then begin t[i+1]:=0; end
else begin {fin étape 1, étape 2 "calcul de pr"}p:=0;for k:=1 to j do if t[k]>1 then
for x:=1 to npr[t[k]] do begin
if(p=0)then begin inc(p);pr[p]:=tpr[t[k],x];pui[p]:=tpui[t[k],x]*t[k+j];end
else if ver(tpr[t[k],x],pr,p) then begin inc(p);pr[p]:=tpr[t[k],x];pui[p]:=tpui[t[k],x]*t[k+j];end
else begin a:=0;repeat inc(a) until(pr[a]=tpr[t[k],x]);pui[a]:=pui[a]+tpui[t[k],x]*t[k+j];end;end;
if p>1 then tri(pr,pui,p);{fin étape 2 "fin calcul de pr"};if p>0 then begin
{étape 3}m:=2*j; for k:=1 to n do if ver(k,t,m)then begin inc(m);t[m]:=k;if m=n then k:=n;end;{fin étape 3}
{etape 4}{seulement les pr existent} m:=0;for k:=2*j+1 to n do if(ver(t[k],pr2,n2))then begin bl:=true;
if t[k]=1 then begin bl:=false;inc(m)end
else begin for x:=1 to npr[t[k]] do if ver(tpr[t[k],x],pr,p) then begin bl:=false;x:=npr[t[k]];end;end;
if bl then begin inc(m);if(2*j+m<k)then begin y:=t[k];t[k]:=t[2*j+m];t[2*j+m]:=y;end;end;end;{fin seulement}
if m>=((n div 2)-j)then begin {tous les pr existent}h:=1;
for a:=1 to p do begin h:=0;for b:=2*j+1 to 2*j+m do if(t[b ]>1)then for c:=1 to npr[t[b ]] do
if(pr[a]=tpr[t[b ],c])then begin h:=1;c:=npr[t[b ]];b:=2*j+m;end;;;if h=0 then a:=p;end;{fin tous les pr existent}{fin ét4}
if h=1 then begin ind[1]:=2*j;d:=0;bl:=true;repeat inc(d);
if ind[d]<(3*j+m+d-(n div 2)) then begin inc(ind[d]);if d=(n div 2)-j then begin
{verifier si tous les pr existent}for k:=1 to p do begin l:=0;for c:=1 to d do if t[ind[c]]>1 then
for x:=1 to npr[t[ind[c]]] do if(pr[k]=tpr[t[ind[c]],x])then begin x:=npr[t[ind[c]]];c:=d;l:=1;end;;;if l=0 then k:=p;end;
{fin}if l=1 then begin {permutations des puissances}c:=d;ind[d+1]:=2*j;bl:=true;
repeat inc(c);if(ind[c]<n)then begin repeat inc(ind[c]);until ver(ind[c],ind,c-1)or(ind[c]=n);
if ver(ind[c],ind,c-1)then begin if c=2*d then begin y:=1;for k:=1 to p do begin pui1[k]:=0;for a:=1 to d do
if t[ind[a]]>1 then for b:=1 to npr[t[ind[a]]] do if(pr[k]=tpr[t[ind[a]],b])then begin
pui1[k]:=pui1[k]+tpui[t[ind[a]],b]*t[ind[a+d]];b:=npr[t[ind[a]]];if pui1[k]>pui[k] then begin y:=0;a:=d;k:=p;end;end;
if(y=1)then if(pui1[k]<pui[k])then begin y:=0;k:=p;end;end;if y=1 then begin {afficher le résultat}
for k:=1 to j do begin write(t[k],'^',t[k+j]);if k<j then write(' x ') else write(' = ');end;
for a:=1 to d do begin write(t[ind[a]],'^',t[ind[a+d]],' ');if a<d then write('x ');end;inc(nbr);writeln('(',nbr,')');
if ch=1 then readln(ch);c:=c-3;end{fin aff}
else c:=c-2;end else ind[c+1]:=2*j;end else if c>d+1 then c:=c-2 else bl:=false;end else if c>d+1 then c:=c-2
else bl:=false;until(bl=false);dec(d);bl:=true;end else dec(d);end else ind[d+1]:=ind[d];end else if d>1 then d:=d-2
else bl:=false;until(bl=false);dec(i);end else i:=i-1;end else i:=i-1;end else i:=0;end;end else i:=i-2;end
until(q=0);end;end.
Si il est trés long c'est parce que j'ai essayer d'illiminer le maximum des cas possibles, les égalité seront afficher de la plus dissimetrique vers la plus symetrique.
Malheureusement pour n=20 les cas deviennent trés nombreuses mon processeur "de 2 GHZ" n'as pas pu calculer les solutions.
J'ai essayer les solutions pour n=14 et j'ai trouver 375 solutions.
Pour n=16 le programme commence à trouver des solutions au bout de 3 ou 4 minutes mais j'ai pas voulue attendre jusqu'a termier tous les cas car cela durera beaucoup.
Pour n=18 cela doit prendre encore plus de temps donc malheureusement le programme ne pourra calculer toutes les solution que pour n<=16.
n doit être biensûre un nombre paire puisque chaque nombre doit avoir une puissance.
Pour tester le programme vous n'avez qu'à copier l'algortithme si dessus et le coller dans le turbo pascal puis vous appuyer "Ctrl+F9" une fenêtre apparaitra vous donner l'entier n qui doit être un nombre entier paire telque 6<=n<=16 pour pour n=16 cela devera prnedre un peut de temps avant que les solutions ne commencent à être affichées pour n>16 cela devera durer plus longtemp mais si vous voulez essayer vous n'avez qu'à attedre .
Aprés si vous voulez que les solution s'affichent une par une vous tapez 1, si vous voulez que les solutions s'affichent toutes à la fois appuiez sur n'importe quel chiffre different de 1(2 par exemple).
Aucune idée pourquoi l'écriture est devenue en gras à la 2éme moitié .
pour l'explication du programme se sera demain ou aprés demain s'il y en a des mathiliens qui sont interessés ...
Pour l'énigme "123456789" je ne crois pas que je suis capable à la résoudre car il n'y a pas un moyen qui permet verifier les égalités sans les calculer directement et donc la premiére opération qui aboutira à un nombre à + de 10 chiffres bloquera le programme donc il ne sera pas possible de verifier tout les solutions.
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i] (tentative de fermeture de balises)
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b] (OK pour l'italique - maintenant le gras)
master_och, une explication :
tous les [i ] et [b ] (sans espace dans ton programme) sont interprétés comme balises italique ou gras et n'apparaissent pas d'ailleurs dans ton message.
J'ai mis des espaces entre tes crochets qui ne sont donc plus interprétés comme balise. Tout est revenu dans l'ordre.
Je crois que j'avais neutralisé ces balises ouvrantes par une foultitude de [/i] et [/b] dans mes 2 messages de 3h36 et 3h37.
Nicolas_75,
Il est nécessaire de traiter le problème à la source
Il faut intervenir dans le message afin de fermer les balises car il y a encore des dommages par la suite : dans le profil de master_och, ce problème de balises est encore présent et tous les messages qui apparaissent après celui qui pose problème sont aussi en italique ou en gras. Et du coup, les messages ne sont pas forcément agréable à lire.
Merci de ton intervention Nicolas_75
Océane, merci pour l'explication. Je comprends que j'ai fait disparaître les symptômes du problème, mais pour ce fil uniquement. Dans d'autres pages où le message pourrait apparaître également (profil, ...), le "gras italique" perdurait.
Je me demande si ce problème pourrait être résolu techniquement par un comptage des balises restées ouvertes, et le rajout des balises fermantes nécessaires, au moment de l'appui sur "POSTER".
Nicolas
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :