精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《newversion (海納百川天下歸心)》之銘言: : 借標題發文一下,弱者小弟也有一個心願 : 1. 計算 sqrt(x) 到小數 1萬位 : 2. 計算 10000! : 要能做到以上,需具哪些知識?或是給在下一點提示或關鍵字。 可能我前面寫的 code 不是很淺顯易懂... 不過我要說的是, 使用 gmp 或 mpfr 幫你做巨大整數/超高精度浮點運算是很方便的, 以你的這兩個題目來說: // 計算 sqrt(x) #include <stdio.h> #include <math.h> #include <mpfr.h> int main(int argc, char *argv[]) { mpfr_t r; unsigned long int precision, x=2; precision = ceill(10000*logl(10)/logl(2)); mpfr_init2(r, precision); mpfr_sqrt_ui(r, x, MPFR_RNDN); // <-- 重點就只有這行 mpfr_printf("%.10000Rf\n", r); mpfr_clear(r); return 0; } // 計算 10000! #include <stdio.h> #include <gmp.h> int main(int argc, char *argv[]) { mpz_t s; unsigned int n = 10000; mpz_init_set_ui(s, 1); for (n=1; n<=10000; n++) { // <-- 重點就只有這個迴圈 mpz_mul_ui(s, s, n); } gmp_printf("%Zd\n", s); mpz_clear(s); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.11.23