- 论坛徽章:
- 0
|
[help]超大數求(factorial)
楼上的兄弟,你的结果明显不对嘛。
还有我说for(r=1;r<digit+1;r++) -->; for(r=j;r<digit+1;r++) 跟程序的正确性无关,这是效率方面的问题(效率需求不很高,也就无所谓了,都没问题的)。
#include <stdio.h>;
void main(){
int i,j,k,r;
int data[200000];
int n;
int digit;
for (i=1;i<200000+1;i++)data=0;
data[0]=1;
data[1]=1;
digit=1;
printf("Enter a number what you want tocalculus:";
scanf("%d",&n);
for(i=1;i<n+1;i++){
for(j=1;j<digit+1;j++)data[j]*=i;
for(j=1;j<digit+1;j++){
if (data[j]>;=10){
for(r=j;r<digit+1;r++){
if (data[digit]>;=10)
digit++;
data[r+1]+=data[r]/10;
data[r]=data[r]%10;
}
}
}
}
printf("%d! = ",n);
for (k=digit;k>;0;k--)printf("%d",data[k]);
printf("\n";
}
|
|