Bonjour à tous,
Voilà je met ce message car je voullais programmer une fonction factorielle pour de grand nombre et à ma grande surprise ma casio fait ça mieux qu'un programme écrit en C, je m'explique :
Ma calculatrice casio (graph 65) peut calculer jusque 9.99999...9e+99 (quand même). C'est pourquoi je peux calculer 69! sans problème.
Voici la fonction factorielle que j'ai écrit en C
j'ai choisi long double car c'est le type ayant la plus grand capacitée que j'ai trouvé. Mais ça reste quand même très limité : je ne passe pas au dessus de 20!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 long double factorielle(int a) { int i; long double b = 1L; for(i = a ; i > 0 ; i--) b *= i; return b; }
La taille de long double sur mon compilateur (gcc) est de 12 octets soit 12*8 = 96 bits (ce qui me permet une limite positive de (2^96)-1 = 7.922816251e+28 )
Mais comment est-ce possible ? Ma calculatrice n'a pourtant pas un processeur 32 bits (je suppose moins) !! Comment faire pour obtenir des nombre pouvant aller jusque 9.999...9e+99 ??
Merci d'avance pour vos réponses.
Partager