大数的 GCD
GCD for large numbers
我正在尝试创建一个处理非常大的数字的 gcd 函数。因此,到目前为止我尝试过的任何事情都会导致错误。例如:
fun gcd(a : Int.toLarge, b : Int.toLarge): Int.toLarge =
if b = 0
then a
else gcd(b, a mod b)`
给我以下错误:
Error:unbound type constructor : toLarge in path Int.toLarge
有人能给我一些建议吗,我的程序的其余部分似乎工作正常。提前致谢!
您将 Int.toLarge
视为一个类型,但它是一个函数。您要查找的类型是 IntInf.int。无论您输入什么类型的数字,gcd 函数看起来都是一样的;但您可能需要参考另一个模块的算术运算符。
这是类型 Int.int:
的 gcd 函数
fun gcd (a, 0) = a
| gcd (a, b) = gcd (b, a - b*(a div b))
并且由于 SML/NJ 的算术运算符被重载,这里有一个用于 IntInf.int:
fun gcd (a, 0) = a : IntInf.int
| gcd (a, b) = gcd (b, a - b*(a div b))
我正在尝试创建一个处理非常大的数字的 gcd 函数。因此,到目前为止我尝试过的任何事情都会导致错误。例如:
fun gcd(a : Int.toLarge, b : Int.toLarge): Int.toLarge =
if b = 0
then a
else gcd(b, a mod b)`
给我以下错误:
Error:unbound type constructor : toLarge in path Int.toLarge
有人能给我一些建议吗,我的程序的其余部分似乎工作正常。提前致谢!
您将 Int.toLarge
视为一个类型,但它是一个函数。您要查找的类型是 IntInf.int。无论您输入什么类型的数字,gcd 函数看起来都是一样的;但您可能需要参考另一个模块的算术运算符。
这是类型 Int.int:
的 gcd 函数fun gcd (a, 0) = a
| gcd (a, b) = gcd (b, a - b*(a div b))
并且由于 SML/NJ 的算术运算符被重载,这里有一个用于 IntInf.int:
fun gcd (a, 0) = a : IntInf.int
| gcd (a, b) = gcd (b, a - b*(a div b))