Produit de nombres impairs consécutifs

Résolu
mJuJu Messages postés 56 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 27 mai 2014 - 5 juin 2008 à 01:22
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 - 6 juin 2008 à 06:39
Bonjour à tous.

Voilà. Ma question est extrêmement simple: existe-t-il un algorithme qui puisse donner rapidement le PRODUIT de n nombres impairs consécutifs?

Exemple:     43 x 45 x 47 x . . . . . . . x 87 x 89 x 91.

J'ai bien essayé de trouver quelque chose par moi-même avec des 2n + 1, puissances de 2 et tout le toutim, mais je n'arrive à rien de probant, sinon que j'arrive à quelque chose de plus compliqué que le problème initial ! 

En effectuant de nombreuses recherches sur le Web, j'ai trouvé beaucoup de choses sur la façon de déterminer si un nombre est impair, sur les factorisations, les nombres premiers et toutes sortes de joyeusetés du même tonneau. Mais rien qui puisse répondre à ma question.

Accessoirement, j'aimerais connaître la façon de calculer le nombre de chifrres du résultat., ceci afin de déterminer la taille d'un tableau de Longs pouvant contenir ce résultat.

Voili. Voilou. Avec mes chaleureux anticipés remerciements.

JuJu
A voir également:

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 juin 2008 à 22:27
Je ne connais pas de formule qui donnerait le résultat autrement que par itération.

Va falloir une classe d'entier sur 256 bits, faisable en VB ???

ciao...
BruNews, MVP VC++
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 juin 2008 à 08:09
Bonjour,

Une boucle le ferait

Private Sub Command7_Click()
  j = 1
  For i = 43 To 49 Step 2
    j = j * i
  Next
  MsgBox j
End Sub

mais tu vas atteindre un résultat astronomique ...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 juin 2008 à 08:11
Un nombre est mar ailleurs impair lorsque le reste de sa division par 2 n'est pas égal à zéro.
Vois Mod dans ton aide en ligne
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 juin 2008 à 09:56
Passons du principe maths au mode binaire informatique:

Un nombre est impair quand le bit0 (le 1er) est positionné, on aura donc:
If nbr And 1 Then IMPAIR

Ce qui passera des 40 cycles du Mod à 1 cycle parallélisable (donc 1/2) du And.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mJuJu Messages postés 56 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 27 mai 2014
5 juin 2008 à 21:03
Bonjour,
 
je connais le principe du And pour savoir si un nombre est impair. Mais là n'est pas ma question.
 
P = 43 x 45 x 47 x . . . x 87 x 89 x 91


A part faire le calcul de manière itérative, existe-t-il un moyen de calculer P plus facilement en évitant si possible toutes les multiplications.


Merci de recadrer vos réponses.

JuJu
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
5 juin 2008 à 22:14
Comme dirais brunews, tu peux parrallélisé le code pour en augmenter les performances. Cependant, tu te trouveras rapidement avec la contrainte de stockage d'un si grand nombre!
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
6 juin 2008 à 06:39
On peut faire des calcul sur des nombres infinis, il existe plusieurs solutions ...
0
Rejoignez-nous