ユークリッドの互除法

なんとなく。

gcd <- function(m, n){
    l <- sort(c(m, n))
    if(l[1] == 0) return(l[1])
    while((ll <- l[2]%%l[1]) != 0){
        l <- c(ll, l[1])
    }
    return(l[1])
}

gcd(2147483647, 10)
[1] 1