| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7725 人关注过本帖, 1 人收藏
标题:疯狂编程,计算2的10万次方
只看楼主 加入收藏
kekeyu
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-8-14
收藏
得分:0 
呵呵,当然不能跟人家搞技术的比啦。
偶笔记本7秒左右。
双核T5870 2GHz
2010-08-17 18:34
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
for(i=n-1; i>=0; i--)
{   if(a[i]<1000&&a[i]>=100&&i!=n-1) fprintf(fp,"%c",'0');      //数据不够4位,前面补0
        else if(a[i]<100&&a[i]>=10&&i!=n-1) fprintf(fp,"%s","00");
        else if(a[i]<10&&i!=n-1) fprintf(fp,"%s","000");
        fprintf(fp,"%d",a[i]);
}
这一段写的比较恶心

我就是真命天子,顺我者生,逆我者死!
2010-08-17 22:07
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
程序代码:
#include<stdio.h>
#define BASE 2
#define EXPONENT 100000
int main(void)
{
    int result[50000] = {-1,1,0};      //初始化,数组从1开始记数
    int i, j, k, digit;                

    digit = 1;                         //每次阶乘得出结果的位数
    for (i = 1; i <= EXPONENT; i++)
    {
        for(j = 1; j <= digit; j++)            //先做每一位与i的乘积放在一个数组空间中
        {
            result[j] *= BASE;
        }
        for (k = 1; k <= digit; k++)           //调整个元素的值,使之在0--9之间
        {
            result[k+1] += result[k] / 10000;    
            result[k] %= 10000;
            if (result[digit+1] > 0)           //位数增加
                digit++;
        }
    }
    printf("%d^= ", BASE);
    printf("%d", result[digit]);
    for (i = digit-1; i > 0; i--)
    {
        if( result[i] < 10 )                      
            printf("%s", "000");
        else if ( result[i] < 100 )  
            printf("%s", "00");
        else if ( result[i] < 1000 )  
            printf("%s", "0");
        printf("%d", result[i]);
    }
    printf("\n");
    return 0;
}

以前写的代码, 从阶乘改过来的, 估计问题不大。
哥对大数已经不敢兴趣了。 发个帖分享一下。

我就是真命天子,顺我者生,逆我者死!
2010-08-17 22:27
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
gmp 的大数库只用了 0.012 秒。而且时间花在 printf 上了。
程序代码:
#include <stdio.h>
#include <gmp.h>

#define POWER 100000

int main(int argc, char *argv[])
{
    mpz_t pow;
    mpz_init(pow);

    mpz_ui_pow_ui(pow, 2, POWER);
    gmp_printf("2^100000 =\n%Zd\n", pow);

    return 0;
}

2010-08-18 02:54
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 14楼 pangding
路过

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-19 17:27
不归鹄
Rank: 9Rank: 9Rank: 9
来 自:冥王星
等 级:蜘蛛侠
威 望:4
帖 子:491
专家分:1380
注 册:2009-12-20
收藏
得分:0 
以下是引用Devil_W在2010-8-17 15:10:37的发言:


Fuck, Java的大数库只要6s
差距啊,程序的质量问题有待关注

2010-08-20 07:55
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
都可以,无非就是分解罢了

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-08-20 08:39
starjun14
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:266
专家分:136
注 册:2009-4-26
收藏
得分:0 
O~~MY~~GOA
2010-11-02 11:20
Only_Boby
Rank: 2
等 级:等待验证会员
帖 子:37
专家分:33
注 册:2010-10-28
收藏
得分:0 
Java的数据库 与visual算起来时间怎么有这么大的区别
2010-11-02 21:40
lxk899
Rank: 2
等 级:论坛游民
帖 子:19
专家分:30
注 册:2010-3-25
收藏
得分:0 
hao a ,luo guo
2010-11-03 08:49
快速回复:疯狂编程,计算2的10万次方
数据加载中...
 
   



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

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