| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1625 人关注过本帖
标题:任意位数的高精度阶乘算法
只看楼主 加入收藏
SLYAR
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-9-4
收藏
 问题点数:0 回复次数:4 
任意位数的高精度阶乘算法
大家给指点一下,看看哪里还需要改进。

windows xp dev c++ 4.9.9.2 编译通过

程序代码:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

/* 求N!的位数公式 log10(1)+log10(2)+···+log10(n) 取整加1  */
int wei(int n){
    int i;
    double sum=0;
    for(i=1;i<=n;i++) sum+=log10((double)i);
    /* 以万为进制,一位可以表示4个数,减少存储空间 */
    return (int)((sum+1)/4+1);
}

/* 高精度阶乘核心 */
int main(){
    int i,j,n,jinwei,weishu=1,temp;
    unsigned int *x;
    scanf("%d",&n);
    /* 依据阶乘位数申请动态数组 */
    x=(unsigned int*) malloc(wei(n)*sizeof(int));
    x[0]=1;
    for(i=2;i<=n;i++){
        jinwei=0;
        for(j=1;j<=weishu;j++){
            temp=x[j-1]*i+jinwei;
            if (temp>=1){
                /* 以万为进制,提高运算速度 */
                x[j-1]=temp%10000;
                jinwei=temp/10000;
            }
        }
        while(jinwei){
            weishu++;
            x[weishu-1]=jinwei%10000;
            jinwei/=10000;
        }
    }
    /* 先输出第一个数,防止首位出现0 */
    printf("%d",x[weishu-1]);
    /* 输出其余的数,因为万进制,需要补0 */
    for(j=weishu-2;j>=0;j--) printf("%04d",x[j]);
    /* 释放申请的内存 */
    free(x);
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 算法 阶乘 位数 
2008-10-03 23:36
duanchangren2
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-10-3
收藏
得分:0 

事在人为```
2008-10-04 09:46
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
快速傅里叶变换可以更快

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-10-04 12:26
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
得分:0 
[bo][un]SLYAR[/un] 在 2008-10-3 23:36 的发言:[/bo]

大家给指点一下,看看哪里还需要改进。

windows xp dev c++ 4.9.9.2 编译通过


#include
#include
#include

/* 求N!的位数公式 log10(1)+log10(2)+···+log10(n) 取整加1  */
int wei(int n){
   ...

我正愁呢```谢谢楼主了- -我回去参看一下
2008-10-04 15:28
菜菜小
Rank: 1
等 级:禁止发言
帖 子:23
专家分:0
注 册:2008-10-7
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-10-07 14:32
快速回复:任意位数的高精度阶乘算法
数据加载中...
 
   



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

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