| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖, 1 人收藏
标题:阶乘问题!
只看楼主 加入收藏
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏(1)
 问题点数:0 回复次数:9 
阶乘问题!
那位大哥能给我找个大数阶乘的程序(益出的),我怎么没搜索到啊,难了我一天,郁闷,现在的计算机都64位处理器应该够用了,他非要大数阶乘,我晕
搜索更多相关主题的帖子: 阶乘 
2006-05-04 21:40
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

去我的blog


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-04 22:15
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

你的BLOG怎么去啊,我不会啊


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-04 22:22
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
收藏
得分:0 
n!=1*2*3*....*n->lg(n!)=lg(1*2*3*....*n)=lg(1)+lg(2)+ lg(3)+..+lg(n)
->n!=10^(lg(1)+lg(2)+ lg(3)+..+lg(n))
用这个原理吧!

幽幽黄桷兰----建四狼
2006-05-04 22:24
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-04 22:30
youxiaxyz
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-4-5
收藏
得分:0 

偶贴一个
#define MAX 3000//根据n的大小来define当n为1000时大概要定义3000
#include<stdio.h>

int main()
{
int i = 1, j, n, tag = 0, a[MAX] = { 0 };
a[0] = 1;

scanf("%d", &n);

while(i <= n) {

for(j = 0; j < MAX; j++)
a[j] *= i;

for(j = 0; j < MAX; j++)
if(a[j] >= 10) {
a[j + 1] += a[j] / 10;//当然我们知道a[MAX]不会大于10,否则我们会增大数组下标
a[j] = a[j] % 10;//乘法算式
}

i++;
}//数组的每一个记录一位数字

for(j = MAX - 1; j >= 0; j--) {
if(a[j] != 0)
tag = 1;
if(a[j] != 0 || tag)
printf("%d", a[j]);
}//输出

printf("\n");
return 0;
}

2006-05-04 23:21
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
楼上的,我爱你

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-04 23:29
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

论坛有很多,快搜索吧


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-04 23:30
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用论坛在2006-5-4 21:40:00的发言:
那位大哥能给我找个大数阶乘的程序(益出的),我怎么没搜索到啊,难了我一天,郁闷,现在的计算机都64位处理器应该够用了,他非要大数阶乘,我晕

//计算万以内(含10000)阶乘
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
short mul(short a[],short d,short x)
{ long i,y=0;
for(i=0;i<d;i++)
{ y+=a[i]*(long)x;//x:乘数
a[i]=(short)(y%10000);
y/=10000;
}
a[d]=(short)y;
return d+!!y;//返回(万进制下的)位数
}
void main()
{
long s;
short *a,i,j,n,ws=1;
printf("N=");scanf("%d",&n);
#define Pi 3.14159265358979323846L
s=(long)((log(2*Pi*n)/2+n*(log(n)-1))/log(10)+1);
a=(short*)malloc((s/4+2)*sizeof(short));*a=1;

for(i=2;i<=n;i++)
ws=mul(a,ws,i);

printf("%d!=%d",n,a[ws-1]);
for(j=ws-2;j>=0;j--)
printf("%04d",a[j]);
printf("\n");
free(a);
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 07:47
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用andyss在2006-5-4 22:24:00的发言:
n!=1*2*3*....*n->lg(n!)=lg(1*2*3*....*n)=lg(1)+lg(2)+ lg(3)+..+lg(n)
->n!=10^(lg(1)+lg(2)+ lg(3)+..+lg(n))
用这个原理吧!

这个挺有意思,不过估计是不太准的哦!


对不礼貌的女生收钱......
2006-05-05 09:57
快速回复:阶乘问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024712 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved