阶乘问题
大家好!我想写一个阶乘的程序!代码如下
程序代码:
/* 阶乘*/ #include #include int main(void) { long int n; long int s; long int j; printf("请输入n!"); scanf("%ld",&n); for(j=n;j<0;j-- ) { j=n*j; } printf("阶乘值为",j); getch(); }
但是有问题!
请改正!
如果可以请快一些!
#include <stdio.h> #include <conio.h> int main(void) { int n,j; long int s=1; printf("请输入n:"); scanf("%d",&n); while(n>31 || n<0) { printf("ERROR!重新输入n:"); scanf("%d",&n); } for(j=n;j>0;j-- ) { s*=j; } printf("%d的阶乘值为%ld",n,s); getch(); }
#include<stdio.h> unsigned x[8000]={0},n,p,i,j,t; int main() { while(scanf("%d",&n)!=EOF) { x[p=7998]=1; for(i=1;i<=n;i++) { x[--p]=x[--p]=0; for(j=7998;j>p;j--) {x[j]*=i; t=j+1; x[j]+=x[t]/100000; x[t]%=100000; } while(!x[p]) p++; } for(printf("%u",x[p++]);p<7999;p++) printf("%05u",x[p]); printf("\n"); } return 0; }