Factorielle qui marche jusqu'a 415 chiffres

Contenu du snippet

Moi, quand j'ai commence mon cours de programm. j'ai pose la question au prof: pourq. nous utilisons 2 algo (sans recursivite et avec) pour programmer factorielle si ils n'march. pas. (Ex: facto de 30 est nombre negatif).
Prof. ma expliqué quelque chose au sujet des registres et insuffisance de memoire (peut etre il a pense que si je parle franc. tres mal, je n'conn. pas la structure du PC). Explications pourqoui calculatrice d'Unix affiche result. de factorielle je n'ai pas demende - parfois c'est plus intelleg. Dans 2 semaines j'ai montré result. du mon travail. Si vous voulez voir l'effet sur visage de votre prof. - essayez. Hi.

Si serieux: algo est interess. J'ai indique 3 niveau parc. l'idee d'algo est bonne.

Source / Exemple :


#include <stdio.h>
void main(void)
{
int b=10000;//base
int n,q,i,j,p,r,m,max;
int t[100];
int aff=0;
system("cls");
for(i=0;i<100;i++) t[i]=0;
printf("Votre nombre pour calculer factorielle (max=209):-->");scanf("%d",&n);
t[99]=n;
for(m=n-1;m>=2;m--){
    q=0;    for(i=99;i>0;i--)
        {
                p=t[i]*m+q; r=p%b;
                q=(p-r)/b; t[i]=r;
        }
        t[0]=t[0]*m+q;
    }
    if(t[0]>9999) puts("Depassement de capacite: max 209 !!!");
    j=0;
    while (t[j]==0) {j++;max=j;}
printf("Factoriell de %d -->> ",n);
for(j=max;j<100;j++) {
if (t[j]<10) printf("000%d",t[j]);
else if (t[j]<100) printf("00%d",t[j]);
else if (t[j]<1000) printf("000%d",t[j]);
else printf("%d",t[j]);
}
for(i=0;i<aff;i++) printf("0");
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.