'Factorial 'dodicat さんのユーザ定義関数を使う 'https://www.freebasic.net/forum/viewtopic.php?t=23225 'by dodicat ≫ Jan 17, 2015 1:11 #Include "gmpFunctionsJP.bas" Dim n As Integer For n=1 To 35 Print n; "! = "; factorial(n) Next n Print Print "factorial(1000) = "; factorial(1000) Sleep
'Factorial #include once "gmp.bi" Dim n As Integer Declare Function Kaijyou(n As Integer) As ULongInt Declare Sub KaijyouGMP(n As Integer) For n=1 To 25 Print n; "! = "; Kaijyou(n) If n = 20 Then Print , "20! が 64 ビット符号なし型 の限界" Next n Print , "GMP を使うと(何かキー入力して下さい。)" Sleep KaijyouGMP(20) KaijyouGMP(21) KaijyouGMP(1000) Sleep Sub KaijyouGMP(n As Integer) Dim i As Integer Dim As mpz_ptr BigNum = Allocate(SizeOf(__mpz_struct)) mpz_init_set_si(BigNum, 1) For i = 1 to n mpz_mul_ui(BigNum, BigNum, i) 'BigNum = BigNum * i Next i Print n; "! = "; Dim As ZString Ptr s = mpz_get_str(0, 10, BigNum) Print *s; Deallocate(s) Print mpz_clear(BigNum) Deallocate(BigNum) End Sub Function Kaijyou(n As Integer) As ULongInt Dim F As ULongInt Dim i As Integer F = 1 For i = 1 to n F = F * i Next i Kaijyou = F End Function