亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12
最近訪問板塊 發(fā)新帖
樓主: softsongs
打印 上一主題 下一主題

計算 1000! 源代碼 [復(fù)制鏈接]

論壇徽章:
0
11 [報告]
發(fā)表于 2007-04-29 22:15 |只看該作者

  1. (define (factorial n)
  2.   (define (f p i)
  3.     (if (> i n) p
  4.       (f (* i p) (+ i 1))))
  5.   (f 1 1))
復(fù)制代碼


很土的實現(xiàn),沒用任何技巧。不過 guile 在背后使用 gmp,所以大整數(shù)乘法是由 gmp 做的,但沒有用 gmp 的階乘函數(shù)。

看一下時間:

[ 本帖最后由 win_hate 于 2007-4-29 22:19 編輯 ]

fc1.PNG (11.47 KB, 下載次數(shù): 50)

不帶輸出

不帶輸出

fc2.PNG (12.54 KB, 下載次數(shù): 45)

帶輸出

帶輸出

論壇徽章:
39
2017金雞報曉
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16賽季CBA聯(lián)賽之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
12 [報告]
發(fā)表于 2007-04-29 22:34 |只看該作者
gmp的結(jié)果是:
real    0m0.193s
user    0m0.080s
sys     0m0.000s


  1. #include <stdio.h>
  2. #include <gmp.h>

  3. void show(mpz_t show)
  4. {
  5.         char* str=mpz_get_str(NULL,10,show);
  6.         printf("%s\n",str);
  7.         free(str);       
  8. }
  9. int main()
  10. {
  11.         mpz_t mul,res,one;
  12.         mpz_init(mul);
  13.         mpz_init(res);
  14.         mpz_init(one);
  15.         mpz_set_ui(mul,1L);  //mul=1;
  16.         mpz_set_ui(res,1L);        //res=1;
  17.         mpz_set_ui(one,1L);        //one=1;

  18.         int i;
  19.         for(i=0;i<10000;i++)
  20.         {
  21.                 mpz_mul(res,res,mul);        //res=res*mul;
  22.                 mpz_add(mul,mul,one);        //mul++;
  23.         }
  24.        
  25.         show(res);

  26.         return (0);
  27. }
復(fù)制代碼

論壇徽章:
39
2017金雞報曉
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16賽季CBA聯(lián)賽之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
13 [報告]
發(fā)表于 2007-04-29 22:38 |只看該作者
原帖由 win_hate 于 2007-4-29 21:52 發(fā)表
gmp 是這樣處理的:

1) n! 分解成 2^m p_1^a_1 p_2^a_2 ... p_r^a_r

2)2^m 只不過是移位

3)其余素因子按方冪分組,即同次的放在一起,變成 (q_1 q_2 ... q_t)^a 的形式。由于我們能快速計算方冪,所以 ...


gmp中求n!的函數(shù)是哪個?我沒找到啊!

論壇徽章:
0
14 [報告]
發(fā)表于 2007-04-29 23:14 |只看該作者
是這個吧:


  1. void mpz_fac_ui (mpz t rop, unsigned long int op)
復(fù)制代碼


  1. #include <stdio.h>
  2. #include <gmp.h>

  3. int
  4. main ()
  5. {
  6.         int n=10000;
  7.         mpz_t r;

  8.         mpz_init (r);
  9.         mpz_fac_ui (r, n);
  10.         mpz_out_str (stdout, 10, r);
  11. }
復(fù)制代碼

[ 本帖最后由 win_hate 于 2007-4-29 23:19 編輯 ]

論壇徽章:
0
15 [報告]
發(fā)表于 2007-04-30 08:55 |只看該作者
還是Gmp快.
大數(shù)的運算一般來說是沒有必要自己實現(xiàn)的.

我也看過一個基于gmp計算圓周率的數(shù)值程序, 速度比日本人寫的Super Pai要快.

論壇徽章:
0
16 [報告]
發(fā)表于 2007-04-30 09:01 |只看該作者
FreeBSD中ports里面的libgmp對gmp如下評述
GMP is believed to be faster than any other similar library. The
advantage for GMP increases with the operand sizes for certain
operations, since GMP in many cases has asymptotically faster
algorithms.

論壇徽章:
0
17 [報告]
發(fā)表于 2007-04-30 09:01 |只看該作者
原帖由 doctorjxd 于 2007-4-29 16:55 發(fā)表
還是Gmp快.
大數(shù)的運算一般來說是沒有必要自己實現(xiàn)的.

我也看過一個基于gmp計算圓周率的數(shù)值程序, 速度比日本人寫的Super Pai要快.


super \pi算法其實不快的,主要用來測cpu速度了,呵呵。

論壇徽章:
0
18 [報告]
發(fā)表于 2007-04-30 09:10 |只看該作者
原帖由 emacsnw 于 2007-4-30 09:01 發(fā)表


super \pi算法其實不快的,主要用來測cpu速度了,呵呵。


同意, 但是一開始這個項目是用來在大型機上計算Pai的.

論壇徽章:
0
19 [報告]
發(fā)表于 2007-04-30 10:12 |只看該作者
恩,學(xué)習(xí)了,謝謝!
等哪天需要更加快速的計算大數(shù)階乘時,我可能會考慮GMP算法。

原帖由 win_hate 于 2007-4-29 21:52 發(fā)表
gmp 是這樣處理的:

1) n! 分解成 2^m p_1^a_1 p_2^a_2 ... p_r^a_r

2)2^m 只不過是移位

3)其余素因子按方冪分組,即同次的放在一起,變成 (q_1 q_2 ... q_t)^a 的形式。由于我們能快速計算方冪,所以 ...

論壇徽章:
0
20 [報告]
發(fā)表于 2007-04-30 10:14 |只看該作者
看來俺的速度gmp還有一個數(shù)量級的差距。
主要原因是沒有利用計算機計算方冪快的性質(zhì), 恩。

謝謝醉臥水云間 兄的關(guān)注!

原帖由 醉臥水云間 于 2007-4-29 22:34 發(fā)表
gmp的結(jié)果是:
real    0m0.193s
user    0m0.080s
sys     0m0.000s

[code]
#include <stdio.h>
#include <gmp.h>

void show(mpz_t show)
{
        char* str=mpz_get_str(NULL,10,show);
         ...
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP