Formule mathematique ...

Olympiades mathématiques, énigmes et défis
andrebernard
Messages: 8
Enregistré le: 25 Sep 2006, 12:21

Formule mathematique ...

par andrebernard » 25 Sep 2006, 12:32

Bonjour

Je ne sais pas si c'est dans cette rubrique qu'il faut poster, je suis tout nouveau sur ce forum, en fait je suis un handicapé des math.

J'etais pas bon petit, et maintenant je regrette de ne pas avoir persévéré, car ma passion est la programmation informatique... :mur:

J'ai besoin d'une formule qui permet de retrouver un nombre qui a été multiplié par la somme de ses propres chiffres.

Je m'explique : 534 * (5+3+4) = 534 * 12 = 6408

Bon, jusqu'a la, ça va, c'est dans l'autre sens que ça se corse :

Maintenant, je ne connais que le 6408 et je veux obtenir 534.

Ayant arrété les math en 4e, c'est un peu fort pour moi.

Existe t'il une formule toute prête ??? existe t'il un nom pour cette operation ??? ou bien est ce du domaine de l'impossible.

Le PC trouve la solution en les essayant toutes.....ça marche jusqu'a des nombres de 5/6 chiffres, mais apres, j'ai le temps d'aller me coucher pour avoir la soluce.

Pour l'explication allez y doucement, n'oubliez pas mon niveau maternelle. :marteau:

Merci d'avance à tous
Bonne journée.



Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 15:04

par Flodelarab » 25 Sep 2006, 12:50

andrebernard a écrit:Bonjour

Je ne sais pas si c'est dans cette rubrique qu'il faut poster, je suis tout nouveau sur ce forum, en fait je suis un handicapé des math.

J'etais pas bon petit, et maintenant je regrette de ne pas avoir persévéré, car ma passion est la programmation informatique... :mur:

J'ai besoin d'une formule qui permet de retrouver un nombre qui a été multiplié par la somme de ses propres chiffres.

Je m'explique : 534 * (5+3+4) = 534 * 12 = 6408

Bon, jusqu'a la, ça va, c'est dans l'autre sens que ça se corse :

Maintenant, je ne connais que le 6408 et je veux obtenir 534.

Ayant arrété les math en 4e, c'est un peu fort pour moi.

Existe t'il une formule toute prête ??? existe t'il un nom pour cette operation ??? ou bien est ce du domaine de l'impossible.

Le PC trouve la solution en les essayant toutes.....ça marche jusqu'a des nombres de 5/6 chiffres, mais apres, j'ai le temps d'aller me coucher pour avoir la soluce.

Pour l'explication allez y doucement, n'oubliez pas mon niveau maternelle. :marteau:

Merci d'avance à tous
Bonne journée.


Si ton but est de faire ça pour des nombres de plusieurs centaines de chiffres, sache que c imossible en l'état actuel des connaissance de l'Homme.

pkoi ?
parce qu'il faudrait etre capable de trouver tous les facteurs d'un nombre, d'abord.

Quelle méthode proposes tu pour partir de 6408 pour arriver à 534 ?
a priori, je dirais qu'il faut décomposer 6408 en un produit d'entiers ... et ça on sait pas faire.

Après libre a ton imagination de trouver autre chose

sandrine_guillerme
Membre Irrationnel
Messages: 1918
Enregistré le: 07 Sep 2006, 16:48

par sandrine_guillerme » 25 Sep 2006, 13:24

Flodelarab a écrit:a priori, je dirais qu'il faut décomposer 6408 en un produit d'entiers ... et ça on sait pas faire.

Après libre a ton imagination de trouver autre chose



Ou est passer l'algorithme d'Euclide ?(EEA)

andrebernard
Messages: 8
Enregistré le: 25 Sep 2006, 12:21

par andrebernard » 25 Sep 2006, 13:26

Bah en fait, c'est pas moi qui le fait mais la machine.

Je fait une boucle en augmentant la valeur d'un nombre de un a un, puis j'essaye si le resultat est egal a 6408.

Si c'est le cas j'ai trouvé la solution.

a = unité
b = decimal
c = centaines
d = etc ...

((k*10000000000)+(j*1000000000)+(i*100000000)+(h*10000000)+(g*1000000)+(f*100000)+(e*10000)+(d*1000)+(c*100)+(b*10)+a) * (a+b+c+d+e+f+g+h+i) = 6408

ça marche mais le PC chauffe et c'est long.

Quidam
Membre Complexe
Messages: 3401
Enregistré le: 03 Fév 2006, 17:25

par Quidam » 25 Sep 2006, 13:28

andrebernard a écrit:Pour l'explication allez y doucement, n'oubliez pas mon niveau maternelle.

OK, c'est noté !
andrebernard a écrit:Existe t'il une formule toute prête ???

D'accord avec Flodelarab, je pense qu'il n'en existe pas ! (en tous cas, je ne la connais pas !)
andrebernard a écrit:ça marche jusqu'a des nombres de 5/6 chiffres, mais apres, j'ai le temps d'aller me coucher pour avoir la soluce.

Jusqu'où veux-tu aller ? Si cela reste raisonnable, disons, des nombres de quinze chiffres maximum, je pense que tu peux t'en tirer avec une fonction que tu ne connais probablement pas vu que tu as arrêté les maths en quatrième et qu'on apprend cette fonction en terminale ! Il s'agit de la fonction logarithme, souvent notée log ou ln. Cependant, en tant qu'informaticien, tu as accès à cette fonction dans de nombreux logiciels de programmation. Et rien ne t'empêche d'utiliser cette fonction log même si tu ne la connais pas.

Le nombre P de chiffres d'un nombre N est donné par la formule :



(E(x) est la partie entière de x, c'est-à-dire le nombre n tel que )

Par exemple, si N = 1234567890123, avec ton ordinateur, tu peux calculer log(N) : tu trouves 27,8417..., puis log(10) : tu trouves 2,30258.... En divisant le premier par le deuxième, tu trouves 12,091... Tu en prends la partie entière : 12, et tu ajoutes 1, ça fait 13 ! Donc N a 13 chiffres.

À présent, si tu as le produit P du nombre N et de la somme de ses chiffres S, tu es certain que, puisque S est au moins égal à 1 (les chiffres ne peuvent pas être tous 0 !), que N est au plus égal à P : il ne peut pas être plus grand que P ! Si donc tu calcules, comme je viens de te montrer, le nombre de chiffres de P, tu es certain que le nombre de chiffres de N est au maximum égal au nombre de chiffres de P. Par conséquent, puisque par ailleurs tu es certain que chaque chiffre est au maximum égal à 9, en multipliant le nombre de chiffres de P par 9 tu es certain que S ne peut en aucun cas être plus grand que le résultat trouvé.

Or, cette procédure te donne un maximum pour S, qui sera toujours très petit ! Par exemple, en reprenant l'exemple du nombre 1234567890123 ci dessus, qui est déjà très grand, son nombre de chiffres est 13, et si 1234567890123 est le produit de la somme S des chiffres d'un nombre N, avec N, tu sais que S ne peut pas être plus grand que 9*13 soit 117.

Le nombre d'essais que tu dois donc faire est extrêmement réduit. En prenant sans réfléchir davantage tous les nombres de 2 à 117 et en essayant de diviser 1234567890123 par chacun de ces nombres, tu détecte très rapidement ceux d'entre eux pour lesquels ça tombe juste et tu n'as plus qu'à chercher si la somme des chiffres du quotient est bien égal au nombre testé !

A mon avis, tu n'as pas le temps d'aller te coucher...Tu fais trois pas vers ton lit, et c'est fini !

Bien sûr, si comme l'envisage Flodelarab, tu veux faire ça pour des nombres immenses, genre des nombres de plusieurs centaines de chiffres, c'est plus difficile car il te faut des modules qui peuvent calculer sur de grands nombres. A priori, la plupart des ordinateurs travaillent sur des nombres ayant au maximum 15 à 16 chiffres de précision : pour une plus grande précision, tu as besoin de programmes spéciaux.

Mais même dans ce cas-là, le temps de calcul sera à mon avis très court ! Avec un nombre de 300 chiffres, le S que l'on cherche est limité par 2700 (ben oui ! 9*300 !) ce qui reste encore très peu pour un ordinateur : il faudra quand même trouver un moyen de calculer sur de grands nombres...

sandrine_guillerme
Membre Irrationnel
Messages: 1918
Enregistré le: 07 Sep 2006, 16:48

par sandrine_guillerme » 25 Sep 2006, 13:29

mais as tu essayé l'algorithme d'Euclide ?? et c'est quel language que tu utilise ??
precise le comme ça les gens pourront t'aider plus précisement allez a+

andrebernard
Messages: 8
Enregistré le: 25 Sep 2006, 12:21

par andrebernard » 25 Sep 2006, 13:29

Entretemps que je postais sandrine_guillerme a ecrit :

Ou est passer l'algorithme d'Euclide ?(EEA)

Mon probleme porterais donc un nom à lui tout seul ????

Evidement sandrine autant dire que j'ai rien compris, mais merci quand meme pour ta reponse, car je desesperais...

andrebernard
Messages: 8
Enregistré le: 25 Sep 2006, 12:21

par andrebernard » 25 Sep 2006, 13:33

Si l'algorythme d'euclide etait au programme du CM1, j'aurais du m'en souvenir, autrement je le connais pas :we:

J'utilise purebasic sur PC, mais en fait n'importe quel language peut faire ce calcul plus ou moins vite.

Si tu crois que cela peut intéréssser quelqu'un, je veut bien mettre le bout de code :

a$ = "534"

For i = 1 To Len(a$)
x + Val(Mid(a$,i,1))
SommeChiffre$ = Str(x)
Next

b$ = Str(Val(SommeChiffre$) * Val(a$))
Debug b$

Debug "***********************"

a = 0
b = 0
c = 0
d = 0
e = 0
f = 0
g = 0
h = 0
i = 0
j = 0
k = 0
Nombre$ = Space(20)

Repeat

x + 1
PokeS(@Nombre$, "000000000" + Str(x), Len("000000000" + Str(x)))

a = Val(Mid(Nombre$, Len(Nombre$), 1))
b = Val(Mid(Nombre$, Len(Nombre$) - 1, 1))
c = Val(Mid(Nombre$, Len(Nombre$) - 2, 1))
d = Val(Mid(Nombre$, Len(Nombre$) - 3, 1))
e = Val(Mid(Nombre$, Len(Nombre$) - 4, 1))
f = Val(Mid(Nombre$, Len(Nombre$) - 5, 1))
g = Val(Mid(Nombre$, Len(Nombre$) - 6, 1))
h = Val(Mid(Nombre$, Len(Nombre$) - 7, 1))
i = Val(Mid(Nombre$, Len(Nombre$) - 8, 1))
j = Val(Mid(Nombre$, Len(Nombre$) - 9, 1))
k = Val(Mid(Nombre$, Len(Nombre$) - 10, 1))

Until ((k*10000000000)+(j*1000000000)+(i*100000000)+(h*10000000)+(g*1000000)+(f*100000)+(e*10000)+(d*1000)+(c*100)+(b*10)+a) * (a+b+c+d+e+f+g+h+i) = Val(b$)


b$ = Str(Val(Str(k) + Str(j) + Str(i) + Str(h) + Str(g) + Str(f) + Str(e) + Str(d) + Str(c) + Str(b) + Str(a)))

Debug b$


ATTENTION, en plus d'etre nul en math, je suis aussi debutant dans ce genial language, il peut etre optimisé.....

Meric

andrebernard
Messages: 8
Enregistré le: 25 Sep 2006, 12:21

par andrebernard » 25 Sep 2006, 13:43

Excuse moi QUIDAM, merci pour ta reponse simple et surtout bien expliquée.
En fait, je l'avais pas vu tout de suite, car elle est passée au dessus de mon post quand je l'ai corrigé (eh oui pas bon en français non plus)

Je vais etudier lentement ça

Mille merci :zen:

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 25 Sep 2006, 13:52

L'algorithme d'Euclide permet de décomposer un nombre en produit de nombres premiers mais cette décomposition ne suffira pas ici, il faut ensuite savoir dans la décomposition quels facteurs correspondent à la somme des chiffres et quels facteurs correspondent au nombre lui même.
La réponse de Quidam n'a pas l'air mal ceci dit ^^ jsens qu'il est en forme ce matin (il vient de se lever si j'ai bien compris :lol2:)

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 15:04

par Flodelarab » 25 Sep 2006, 14:17

ça bouge bien cette discussion.

alors.

  • Revoyez vos classiques: Vous confondez le crible d'Erthostène (factorisation) et L'algorithme d'Euclide (PGCD). Sandrine, tu sous-entends que tu fais Euclide pour tout les nombres. Autant faire la division Euclidienne directement et voir si le reste est 0. De plus, faire plusieurs milliards de milliard d'opérations ... as tu considéré le temps qu'il fallait ?
  • Le crible d'Erthostène est pas mieux. Il demande le stockage de TOUS les nombres premiers jusqu'a ce que le crible soit rempli !!! Comment faire pour avoir une si grande place.
  • andrebernard, tu programmes en basic. C du langage interprété de haut niveau. Concretement, tu perds trop de temps dans l'"a-coté" de ton calcul. La ou ça te prend 2h en basic, ça prend 1/2 seconde en C++.
  • Passer tous les nombres se soldera toujours par un echec. Pkoi ? car le temps qu'il te faudra depassera toujours le temps que tu as a y consacrer.

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 25 Sep 2006, 14:21

Flodelarab a écrit:[*] Revoyez vos classiques: Vous confondez le crible d'Erthostène (factorisation) et L'algorithme d'Euclide (PGCD)

exact tseuh...jvais aller me recoucher

Quidam
Membre Complexe
Messages: 3401
Enregistré le: 03 Fév 2006, 17:25

par Quidam » 25 Sep 2006, 14:24

nox a écrit:L'algorithme d'Euclide permet de décomposer un nombre en produit de nombres premiers mais cette décomposition ne suffira pas ici, il faut ensuite savoir dans la décomposition quels facteurs correspondent à la somme des chiffres et quels facteurs correspondent au chiffre lui même.

Pourquoi pas ? Ben parce que c'est bien trop long ! Ma méthode va droit au but. J'ai dit qu'il suffisait de diviser le nombre donné par tous les nombres de 2 au "produit par 9 du nombre des chiffres du nombre donné". J'aurais pu ruser en ne divisant que par les nombres premiers et ainsi trouver les diviseurs assez petits du grand nombre ! Mais pourquoi se fatiguer ! Il y a tellement peu de calculs à faire ! Le calcul est instantané !

Je viens d'essayer avec le nombre N=12 345 684 552. La somme de ses chiffres est 45, et N*45=555 555 804 840


Le programme part de P= 555 555 804 840 qui a douze chiffres. On doit donc tester 555 555 804 840 / k pour k=2 jusqu'à k=12*9 soit k=108...
En quatre centièmes de secondes (oui, j'ai bien dit 4 centièmes, soit 0.04 seconde), le programme m'a ressorti :

Ca marche avec N=15 432 105 690 la somme des chiffres est bien 36 et le produit est 555 555 804 840
Ca marche avec N=12 345 684 552 la somme des chiffres est bien 45 et le produit est 555 555 804 840

Deux solutions ! (j'avais pris N au hasard ! lol !)

Avec l'algorithme d'Euclide on peut chercher le PGCD de deux nombres ! Ici, ce n'est pas cela que l'on cherche ! On cherche simplement à savoir si un nombre divise un autre nombre ! Autant faire une division et voir si ça tombe juste !
nox a écrit:La réponse de Quidam n'a pas l'air mal ceci dit ^^ jle sens chaud bouillant ce matin (il vient de se lever si j'ai bien compris :lol2:)

Pas si tard ! Je me suis levé à 10 H 30 ce matin ! Ca va !
:ptdr: :ptdr: :ptdr: :ptdr:

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 25 Sep 2006, 14:28

J'étais d'accord avec ton algo de toute façon (en prenant en compte la remarque de Flodelarab comme quoi en basic ca va pas forcément cartonner)
Quidam a écrit:Pour info, j'ai fait la grasse matinée jusqu'à 12 H 30 !

c'est vrai que ce matin ca va 10h30 c'est une performance :ptdr:

Quidam
Membre Complexe
Messages: 3401
Enregistré le: 03 Fév 2006, 17:25

par Quidam » 25 Sep 2006, 14:32

nox a écrit:c'est vrai que ce matin ca va 10h30 c'est une performance :ptdr:


C'est vrai ! Mais quand il faut, il faut !

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 23 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite