if K <= 63 # 括弧[]の中は有理数を連分数展開した時の係数を示す if K <= 32 if K <= 16 if K <= 8 if K <= 4 if K == 1 # 267914296/433494437 == [0;1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2] $0 = 267914296 * N $0 = $0 / 433494437 end if K == 2 # 318281039/768398401 == [0;2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3] $0 = 318281039 * N $0 = $0 / 768398401 end if K == 3 # 239244622/790171309 == [0;3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4] $0 = 239244622 * N $0 = $0 / 790171309 end if K == 4 # 133957148/567451585 == [0;4,4,4,4,4,4,4,4,4,4,4,4,4,4] $0 = 133957148 * N $0 = $0 / 567451585 end end if K >= 5 if K == 5 # 71351280/370497401 == [0;5,5,5,5,5,5,5,5,5,5,5,5] $0 = 71351280 * N $0 = $0 / 370497401 end if K == 6 # 89419819/551029753 == [0;6,6,6,6,6,6,6,6,6,6,7] $0 = 89419819 * N $0 = $0 / 551029753 end if K == 7 # 47301793/337737401 == [0;7,7,7,7,7,7,7,7,7,7] $0 = 47301793 * N $0 = $0 / 337737401 end if K == 8 # 114344742/928834417 == [0;8,8,8,8,8,8,8,8,8,6] $0 = 114344742 * N $0 = $0 / 928834417 end end end if K >= 9 if K <= 12 if K == 9 # 98876657/900743824 == [0;9,9,9,9,9,9,9,9,9,2] $0 = 98876657 * N $0 = $0 / 900743824 end if K == 10 # 10610040/107151001 == [0;10,10,10,10,10,10,10,10] $0 = 10610040 * N $0 = $0 / 107151001 end if K == 11 # 20466831/226980634 == [0;11,11,11,11,11,11,11,11] $0 = 20466831 * N $0 = $0 / 226980634 end if K == 12 # 37342128/451196065 == [0;12,12,12,12,12,12,12,12] $0 = 37342128 * N $0 = $0 / 451196065 end end if K >= 13 if K == 13 # 64998297/849948490 == [0;13,13,13,13,13,13,13,13] $0 = 64998297 * N $0 = $0 / 849948490 end if K == 14 # 70053979/985734289 == [0;14,14,14,14,14,14,14,9] $0 = 70053979 * N $0 = $0 / 985734289 end if K == 15 # 58998425/888892276 == [0;15,15,15,15,15,15,15,5] $0 = 58998425 * N $0 = $0 / 888892276 end if K == 16 # 52384307/841410241 == [0;16,16,16,16,16,16,16,3] $0 = 52384307 * N $0 = $0 / 841410241 end end end end if K >= 17 if K <= 24 if K <= 20 if K == 17 # 50553378/862370935 == [0;17,17,17,17,17,17,17,2] $0 = 50553378 * N $0 = $0 / 862370935 end if K == 18 # 36451999/658154881 == [0;18,18,18,18,18,18,19] $0 = 36451999 * N $0 = $0 / 658154881 end if K == 19 # 50203245/956496652 == [0;19,19,19,19,19,19,20] $0 = 50203245 * N $0 = $0 / 956496652 end if K == 20 # 3232060/64802401 == [0;20,20,20,20,20,20] $0 = 3232060 * N $0 = $0 / 64802401 end end if K >= 21 if K == 21 # 4121208/86741173 == [0;21,21,21,21,21,21] $0 = 4121208 * N $0 = $0 / 86741173 end if K == 22 # 5196290/114554089 == [0;22,22,22,22,22,22] $0 = 5196290 * N $0 = $0 / 114554089 end if K == 23 # 6485080/149438269 == [0;23,23,23,23,23,23] $0 = 6485080 * N $0 = $0 / 149438269 end if K == 24 # 8017992/192765313 == [0;24,24,24,24,24,24] $0 = 8017992 * N $0 = $0 / 192765313 end end end if K >= 25 if K <= 28 if K == 25 # 9828200/246097501 == [0;25,25,25,25,25,25] $0 = 9828200 * N $0 = $0 / 246097501 end if K == 26 # 11951758/311204713 == [0;26,26,26,26,26,26] $0 = 11951758 * N $0 = $0 / 311204713 end if K == 27 # 14427720/390082069 == [0;27,27,27,27,27,27] $0 = 14427720 * N $0 = $0 / 390082069 end if K == 28 # 17298260/484968289 == [0;28,28,28,28,28,28] $0 = 17298260 * N $0 = $0 / 484968289 end end if K >= 29 if K == 29 # 20608792/598364773 == [0;29,29,29,29,29,29] $0 = 20608792 * N $0 = $0 / 598364773 end if K == 30 # 24408090/733055401 == [0;30,30,30,30,30,30] $0 = 24408090 * N $0 = $0 / 733055401 end if K == 31 # 28748408/892127053 == [0;31,31,31,31,31,31] $0 = 28748408 * N $0 = $0 / 892127053 end if K == 32 # 30530653/977934049 == [0;32,32,32,32,32,29] $0 = 30530653 * N $0 = $0 / 977934049 end end end end end if K >= 33 if K <= 48 if K <= 40 if K <= 36 if K == 33 # 29765728/983170189 == [0;33,33,33,33,33,25] $0 = 29765728 * N $0 = $0 / 983170189 end if K == 34 # 28175277/958787387 == [0;34,34,34,34,34,21] $0 = 28175277 * N $0 = $0 / 958787387 end if K == 35 # 27120363/949986941 == [0;35,35,35,35,35,18] $0 = 27120363 * N $0 = $0 / 949986941 end if K == 36 # 26982808/972130033 == [0;36,36,36,36,36,16] $0 = 26982808 * N $0 = $0 / 972130033 end end if K >= 37 if K == 37 # 26346493/975531789 == [0;37,37,37,37,37,14] $0 = 26346493 * N $0 = $0 / 975531789 end if K == 38 # 25128576/955546709 == [0;38,38,38,38,38,12] $0 = 25128576 * N $0 = $0 / 955546709 end if K == 39 # 25557452/997395517 == [0;39,39,39,39,39,11] $0 = 25557452 * N $0 = $0 / 997395517 end if K == 40 # 23147289/926469881 == [0;40,40,40,40,40,9] $0 = 23147289 * N $0 = $0 / 926469881 end end end if K >= 41 if K <= 44 if K == 41 # 22715443/931886869 == [0;41,41,41,41,41,8] $0 = 22715443 * N $0 = $0 / 931886869 end if K == 42 # 21893095/920030959 == [0;42,42,42,42,42,7] $0 = 21893095 * N $0 = $0 / 920030959 end if K == 43 # 20625687/887383949 == [0;43,43,43,43,43,6] $0 = 20625687 * N $0 = $0 / 887383949 end if K == 44 # 22608702/995296457 == [0;44,44,44,44,44,6] $0 = 22608702 * N $0 = $0 / 995296457 end end if K >= 45 if K == 45 # 20624720/928570501 == [0;45,45,45,45,45,5] $0 = 20624720 * N $0 = $0 / 928570501 end if K == 46 # 18032648/829893637 == [0;46,46,46,46,46,4] $0 = 18032648 * N $0 = $0 / 829893637 end if K == 47 # 19649153/923928069 == [0;47,47,47,47,47,4] $0 = 19649153 * N $0 = $0 / 923928069 end if K == 48 # 16056675/771054769 == [0;48,48,48,48,48,3] $0 = 16056675 * N $0 = $0 / 771054769 end end end end if K >= 49 if K <= 56 if K <= 52 if K == 49 # 17433762/854609981 == [0;49,49,49,49,49,3] $0 = 17433762 * N $0 = $0 / 854609981 end if K == 50 # 18897603/945257951 == [0;50,50,50,50,50,3] $0 = 18897603 * N $0 = $0 / 945257951 end if K == 51 # 13678763/697885021 == [0;51,51,51,51,51,2] $0 = 13678763 * N $0 = $0 / 697885021 end if K == 52 # 14780170/768852969 == [0;52,52,52,52,52,2] $0 = 14780170 * N $0 = $0 / 768852969 end end if K >= 53 if K == 53 # 15946801/845481229 == [0;53,53,53,53,53,2] $0 = 15946801 * N $0 = $0 / 845481229 end if K == 54 # 17181182/928101889 == [0;54,54,54,54,54,2] $0 = 17181182 * N $0 = $0 / 928101889 end if K == 55 # 9326186/513109741 == [0;55,55,55,55,56] $0 = 9326186 * N $0 = $0 / 513109741 end if K == 56 # 10019633/561278313 == [0;56,56,56,56,57] $0 = 10019633 * N $0 = $0 / 561278313 end end end if K >= 57 if K <= 60 if K == 57 # 10751056/612998749 == [0;57,57,57,57,58] $0 = 10751056 * N $0 = $0 / 612998749 end if K == 58 # 11521817/668463979 == [0;58,58,58,58,59] $0 = 11521817 * N $0 = $0 / 668463979 end if K == 59 # 12333302/727873797 == [0;59,59,59,59,60] $0 = 12333302 * N $0 = $0 / 727873797 end if K == 60 # 13186921/791434981 == [0;60,60,60,60,61] $0 = 13186921 * N $0 = $0 / 791434981 end end if K >= 61 if K == 61 # 14084108/859361413 == [0;61,61,61,61,62] $0 = 14084108 * N $0 = $0 / 859361413 end if K == 62 # 15026321/931874199 == [0;62,62,62,62,63] $0 = 15026321 * N $0 = $0 / 931874199 end if K == 63 # 250173/15764869 == [0;63,63,63,63] $0 = 250173 * N $0 = $0 / 15764869 end end end end end end if K >= 64 $0 = K # $0 := K; // P_2 $1 = K * K # $1 := K**2+1; // P_3 $1 = $1 + 1 if K < 1000 $2 = $1 * K # $1,$0 := ((($1*K+$0)*K+$1),($1*K+$0)) // (P_5, P_4) $0 = $2 + $0 $2 = $0 * K $1 = $1 + $2 end $0 = $0 * N # $0 := $0*N/$1; $0 = $0 / $1 end $2 = N * N $3 = K * N if M == 0 # if M == 0: $4 = $0 * $0 # $4 := K*N*$0+N+$0+$0*$0; $4 = $4 + $0 $4 = $4 + N $3 = $3 * $0 $4 = $4 + $3 $5 = N - $0 # $5 := N*N+(2*(N-$0)-1)/K; $5 = $5 * 2 $5 = $5 - 1 $5 = $5 / K $5 = $5 + $2 if $4 > $5 # if $4 > $5: $0 = $0-1 # $0 := $0 - 1; end # end end # end ifM>1 # if M > 1: $6 = $0 + 1 # $6 := $0 + 1; $1 = M - 1 # $1 := M - 1; $3 = $3 * $6 # $4 := K*N*$6+$6*$6+(2*(N-$6)+$1)*$1/K; $4 = N - $6 $4 = $4 * 2 $4 = $4 + $1 $4 = $4 * $1 $4 = $4 / K $4 = $4 + $3 $3 = $6 * $6 $4 = $4 + $3 $5 = N + $6 # $5 := N*N+$1*(N+$6); $5 = $5 * $1 $5 = $5 + $2 if $4 < $5 # if $4 < $5: $0 = $0 + 1 # $0 := $0+1; end # end end # end $0 = $0 + N # return ($0+N); return $0