| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2091 人关注过本帖
标题:[分享]100!的程序,大家给点意见
只看楼主 加入收藏
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-09-23 19:57
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
得分:0 
大几呀.感觉你挺厉害的
2006-09-23 19:57
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
看看他们的帖,原来他们好早就写了.
比我的好多了.
楼上的要说话到水区来...

倚天照海花无数,流水高山心自知。
2006-09-23 20:08
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
以上你看的这些写得并不好,一般实际应用中的阶乘算法,计算百万阶乘在10秒之内才行

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-09-23 20:12
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
baidu大哥 能不能发给我你说的那个程序啊.

好好学习一下,谢了.

倚天照海花无数,流水高山心自知。
2006-09-23 20:17
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
http://maths.diy.myrice.com/florilegium/factorial.htm

这是一个不错的算法,但还不是目前最快的程序,我见过最快的程序作者没有公开算法与程序源码.

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-09-23 20:19
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
Factorial.exe
Ver2.1.0.1
Celeron(tm) 466MHz
64MB RAM, Win98Sec
Pentium(R) 4 1.70GHz
256MB RAM, WinXP
Result
10,000! 0.069s 0.031s 2.8462... x 10^35,659
20,000! 0.236s 0.109s 1.8192... x 10^77,337
40,000! 0.795s 0.390s 2.0916... x 10^166,713
80,000! 2.661s 1.328s 3.0977... x 10^357,506
100,000! 4.177s 1.969s 2.8242... x 10^456,573
200,000! 13.663s 6.438s 1.4202... x 10^973,350
400,000! 43.818s 20.828s 2.5344... x 10^2,067,109
800,000! 139.337s 66.921s 5.6846... x 10^4,375,039



唉,把这个贴一下吧,给本论坛所有能写个N!高精度算法的人看看,想想,比比差距.

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-09-23 20:36
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
得分:0 
引用乌鸦的程序:
#include <stdio.h>
/*可以调整MAXW来调整程序能承受的最大位数*/
#define MAXW 10000
int ans[MAXW];
void oprate(int n)
{/*a为每次要乘的数,up保存进位,max保存目前答案最大位数*/
int a,i,up,tmp,max;
ans[0]=1;up=0;max=1;
for(a=2;a<=n;a++)
{
for(i=0;i<max;i++)
{/*高精度乘法*/
tmp=ans[i]*a+up;
ans[i]=tmp%10;
up=tmp/10;
}

while(up)
{
ans[i++]=up%10;
up/=10;
}
max=i;/*新的最高位*/
}
while(max--)
printf("%d",ans[max]);
printf("\n");
}
int main(void)
{
int n;
while(scanf("%d",&n)==1)
{/*输入任意数字字符程序即结束*/
oprate(n);
}
return 0;
}

我想知道这个程序是怎么分析的,我怎么看不懂呀
2006-09-23 20:52
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
得分:0 
nuciewth 你这个算法是什么意思呢?我看不明白哦

void mul_big_number(Big_number &a,int num)
{
int i,t=0,s;
for(i=0;i<a.len;i++)
{
s=a.data[i]*num+t;
a.data[i]=s%10;
t=s/10;
}
if(t>0)
{
a.data[i]=t;
a.len++;
}
}
2006-09-23 21:09
阿扁
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-8-31
收藏
得分:0 

哇,没想到一个小小的累积(阶乘)有这么大的学问!!5555555

2006-09-23 21:38
快速回复:[分享]100!的程序,大家给点意见
数据加载中...
 
   



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

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