[HS] Un petit défi pour l'apéro !

Le
Tatanka
Bonjour,

Un entier positf carré est dit carré carré si la somme
de ses chiffres est également un carré. Par exemple, 529 :
1) C'est un carré car 529 = 23^2,
2) C'est un carré carré car 5 + 2 + 9 = 16 = 4^2.

Concevoir une ou des procédures permettant
de faire afficher :
1) Les 5000 premiers carrés carrés en A1:A5000,
2) La somme des chiffres de chaque nombre de
A1:A5000 en B1:B5000.

Pour le plaisir de trouver la solution la plus rapide
et la plus élégante. Si le coeur vous en dit !

A--
Serge
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #23018781
Bonjour Serge,

Cela m'interesserait mais déjà la précédente je ne sais ce que tu dis
de ma proposition.

@+

--
LSteph

"Tatanka" news:ignaqp$klr$
Bonjour,

Un entier positf carré est dit carré carré si la somme
de ses chiffres est également un carré. Par exemple, 529 :
1) C'est un carré car 529 = 23^2,
2) C'est un carré carré car 5 + 2 + 9 = 16 = 4^2.

Concevoir une ou des procédures permettant
de faire afficher :
1) Les 5000 premiers carrés carrés en A1:A5000,
2) La somme des chiffres de chaque nombre de
A1:A5000 en B1:B5000.

Pour le plaisir de trouver la solution la plus rapide
et la plus élégante. Si le coeur vous en dit !

A--
Serge




Modeste
Le #23018831
Bonsour®

ramanujan a écrit
Pour le plaisir de trouver la solution la plus rapide
et la plus élégante. Si le coeur vous en dit !



Rhâaaaa...
m'a gaché mon apéro !!!

casses-toi pas le bicycle sais-tu !!!
http://tushar-mehta.com/misc_tutorials/project_euler/
Tatanka
Le #23018921
Bonjour Stéphane,

Oublié de réagir à tes deux macros ;-(
Si tu fais allusion à aapalin51 et Allez_QIQI,
ells donnent toutes les deux les résultats espérés.
Chez moi, aapalin51 s'exécute en 0,0625s et
et ma version en 0,03125s.

A--
Serge


"LSteph"
Bonjour Serge,

Cela m'interesserait mais déjà la précédente je ne sais ce que tu dis
de ma proposition.

@+

--
LSteph

"Tatanka"
Bonjour,

Un entier positf carré est dit carré carré si la somme
de ses chiffres est également un carré. Par exemple, 529 :
1) C'est un carré car 529 = 23^2,
2) C'est un carré carré car 5 + 2 + 9 = 16 = 4^2.

Concevoir une ou des procédures permettant
de faire afficher :
1) Les 5000 premiers carrés carrés en A1:A5000,
2) La somme des chiffres de chaque nombre de
A1:A5000 en B1:B5000.

Pour le plaisir de trouver la solution la plus rapide
et la plus élégante. Si le coeur vous en dit !

A--
Serge







Tatanka
Le #23019031
Euler fort intéressant ce site !
Vais tenter de résoudre quelques problèmes
sans regarder les solutions :-)
Marci beaucoup.

Serge


"Modeste"
Bonsour®

ramanujan a écrit
Pour le plaisir de trouver la solution la plus rapide
et la plus élégante. Si le coeur vous en dit !



Rhâaaaa...
m'a gaché mon apéro !!!

casses-toi pas le bicycle sais-tu !!!
http://tushar-mehta.com/misc_tutorials/project_euler/
h2so4
Le #23019391
Tatanka expressed precisely :
Bonjour,

Un entier positf carré est dit carré carré si la somme
de ses chiffres est également un carré. Par exemple, 529 :
1) C'est un carré car 529 = 23^2,
2) C'est un carré carré car 5 + 2 + 9 = 16 = 4^2.

Concevoir une ou des procédures permettant
de faire afficher :
1) Les 5000 premiers carrés carrés en A1:A5000,
2) La somme des chiffres de chaque nombre de
A1:A5000 en B1:B5000.

Pour le plaisir de trouver la solution la plus rapide
et la plus élégante. Si le coeur vous en dit !

A--
Serge



Sub carrecarre()
While sol < 5000
i = i + 1
j = i * i
s = j & ""
e = 0
For k = 1 To Len(s)
e = e + Mid(s, k, 1)
Next k
If Sqr(e) = Int(Sqr(e)) Then
sol = sol + 1
Worksheets("sheet1").Cells(sol, 1) = j
Worksheets("sheet1").Cells(sol, 2) = e
End If
Wend
End Sub

--
h2so4
ca PAN
pique DORA
.
Tatanka
Le #23019441
C'est bien cela, sauf que j'ai du remplacer
For k = 1 To Len(s)
par
For k = 1 To Len(CStr(s))

Ultra rapide mais encore plus en passant par un tableau :

Sub carrecarre()
'H2SO4
t = Timer
Dim ncc(1 To 5000, 1 To 2)
While sol < 5000
i = i + 1
j = i * i
s = j & ""
e = 0
For k = 1 To Len(CStr(s))
e = e + Mid(s, k, 1)
Next k
If Sqr(e) = Int(Sqr(e)) Then
sol = sol + 1
ncc(sol, 1) = j
ncc(sol, 2) = e
End If
Wend
[a1:b5000] = ncc
MsgBox Timer - t
End Sub

A--
Serge


"h2so4"
Tatanka expressed precisely :
Bonjour,

Un entier positf carré est dit carré carré si la somme
de ses chiffres est également un carré. Par exemple, 529 :
1) C'est un carré car 529 = 23^2,
2) C'est un carré carré car 5 + 2 + 9 = 16 = 4^2.

Concevoir une ou des procédures permettant
de faire afficher :
1) Les 5000 premiers carrés carrés en A1:A5000,
2) La somme des chiffres de chaque nombre de
A1:A5000 en B1:B5000.

Pour le plaisir de trouver la solution la plus rapide
et la plus élégante. Si le coeur vous en dit !

A--
Serge



Sub carrecarre()
While sol < 5000
i = i + 1
j = i * i
s = j & ""
e = 0
For k = 1 To Len(s)
e = e + Mid(s, k, 1)
Next k
If Sqr(e) = Int(Sqr(e)) Then
sol = sol + 1
Worksheets("sheet1").Cells(sol, 1) = j
Worksheets("sheet1").Cells(sol, 2) = e
End If
Wend
End Sub

--
h2so4
ca PAN
pique DORA
.


h2so4
Le #23019491
Tatanka laid this down on his screen :
C'est bien cela, sauf que j'ai du remplacer
For k = 1 To Len(s)
par
For k = 1 To Len(CStr(s))

Ultra rapide mais encore plus en passant par un tableau :



chez moi cela fonctionne sans problème tel que je l'ai écrit.

--
h2so4
ca PAN
pique DORA
.
Tatanka
Le #23019571
Bizarre, chez moi je reçois le message :
Erreur d'exécution '13'
Incompatibilité de type
et quand je clique sur « Débogage »
la ligne contenant :
e = e + Mid(s, k, 1)
attrape la jaunisse :-)

Serge

"h2so4"
Tatanka laid this down on his screen :
C'est bien cela, sauf que j'ai du remplacer
For k = 1 To Len(s)
par
For k = 1 To Len(CStr(s))

Ultra rapide mais encore plus en passant par un tableau :



chez moi cela fonctionne sans problème tel que je l'ai écrit.

--
h2so4
ca PAN
pique DORA
.


LSteph
Le #23020041
Salut,
;o)
"Tatanka" a écrit
Chez moi, aapalin51 s'exécute en 0,0625s et
et ma version en 0,03125s.



pour 3 centiièmes de secondes de + tu avais donc un résultat consigné dans
la feuille
et non un éphémère msgbox.
:o))

Pour celui encours je ne vois guere mieux que la proposition au vitriol.

@+

--
LSteph
isabelle
Le #23021291
Le 2011-01-14 09:32, MichD [MVP] a écrit :

J'avais ce message à transmettre sur le fil du Mathématicien Serge
HS: Un défi pour l'apéro sur le forum news.aioe.org

Si quelqu'un veut bien lui transmettre, je ne peux pas accéder à ce
forum .... panne !

(le message ne voulait pas partir depuis des
heures voire des jours... ;-)))

Bonjour Serge,

Il y a sûrement une formule plus courte...

Si tu entres un nombre en A1, la formule suivante
te retourne "Vrai" si cela répond à tes critères :

Validation matricielle :

=(A1^(1/2)-TRONQUE(A1^(1/2))=0)+(SOMME
(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)*1)^(1/2)-
TRONQUE((SOMME(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)
*1)^(1/2)))=0)=2

Fichier exemple : http://cjoint.com/?0bnvJDm7IqF


Le 2011-01-13 18:16, Tatanka a écrit :
Bizarre, chez moi je reçois le message :
Erreur d'exécution '13'
Incompatibilité de type
et quand je clique sur « Débogage »
la ligne contenant :
e = e + Mid(s, k, 1)
attrape la jaunisse :-)

Serge

"h2so4"
Tatanka laid this down on his screen :
C'est bien cela, sauf que j'ai du remplacer
For k = 1 To Len(s)
par
For k = 1 To Len(CStr(s))

Ultra rapide mais encore plus en passant par un tableau :



chez moi cela fonctionne sans problème tel que je l'ai écrit.

--
h2so4
ca PAN
pique DORA
.






Publicité
Poster une réponse
Anonyme