什麼它說的是:
停止,如果m或n的不是數字,多個號碼,或有小數,並返回消息,「參數‘N’,‘M’必須是整數標量「。
如果它們都爲零,則返回零。
從現在開始使用絕對值。
做,因爲我們最終會在申請下一步的算法確保N> M。如果不是這種情況,請將它們翻轉:最初將n放在臨時變量「t」中,並將m指定給n,以便現在較大的數字位於(n,m)表達式的開頭。此時,初始(n,m)值都包含m。通過檢索臨時變量中的值並將其分配給m來完成它。
現在他們應用修改後的Euclidean algorithm來找到GCD--這是一種更快捷的多重減法算法的更有效版本,取而代之的是兩個數字中的較大者除以其中較小者的餘數。
在算法最終會被一次迭代後的大年初的數量較少,因此我們將其分配到n來準備第二次迭代。儘管如此,我們需要通過將當前n賦值給臨時變量t來獲取當前的n值。在此之後,我們得到將現在存儲在t中的原始較大數字(n)除以較小數字m得到的模數。結果將取代以m存儲的數字。
只要有一個餘數的進程將繼續下去,這一次與初始數量較少,米打這個大傢伙的作用。當沒有餘數時,返回該特定迭代中較小的數字。
附錄:
現在,我知道怎麼讀這個功能,我看到它僅限於在輸入功能的兩個數字。所以,我自己招待組建一個功能,可以用三個整數輸入工作:
require(numbers)
GCF <- function(x,y,z){
tab.x <- tabulate(primeFactors(x))
tab.y <- tabulate(primeFactors(y))
tab.z <- tabulate(primeFactors(z))
max.len <- max(length(tab.x), length(tab.y), length(tab.z))
tab_x = c(tab.x, rep(0, max.len - length(tab.x)))
tab_y = c(tab.y, rep(0, max.len - length(tab.y)))
tab_z = c(tab.z, rep(0, max.len - length(tab.z)))
GCD_elem <- numeric()
for(i in 1:max.len){
GCD_elem[i] <- min(tab_x[i], tab_y[i], tab_z[i]) * i
}
GCD_elem <- GCD_elem[!GCD_elem==0]
GrCD <- prod(GCD_elem)
print(GrCD)
}
還在爲LCM:
LCM <- function(x,y,z){
tab.x <- tabulate(primeFactors(x))
tab.y <- tabulate(primeFactors(y))
tab.z <- tabulate(primeFactors(z))
max.len <- max(length(tab.x), length(tab.y), length(tab.z))
tab_x = c(tab.x, rep(0, max.len - length(tab.x)))
tab_y = c(tab.y, rep(0, max.len - length(tab.y)))
tab_z = c(tab.z, rep(0, max.len - length(tab.z)))
LCM_elem <- numeric()
for(i in 1:max.len){
LCM_elem[i] <- i^(max(tab_x[i], tab_y[i], tab_z[i]))
}
LCM_elem <- LCM_elem[!LCM_elem==0]
LCM <- prod(LCM_elem)
print(LCM)
}
對於具體的「如果」你問,這部分掉期「m」與「n」通過創建一個臨時變量(「t」)。你可以使用'?debug'('debug(GCD)'),然後調用函數'GCD(x,y)'來查看函數正在做什麼,並查看所有中間變量的值。函數的信息可以像'help(「%%」)等一樣訪問。 –