題目是:有一最簡分數,其分子、分母和為70,將其化為小數並四捨五入後為0.6,則此分數為何?
目前寫的程式碼是``
my.coprime <- function(a,b)
{
k <- 0
for(i in 2:(b-1))
{
if((a%%i==0)&&(b&&i==0))
{ k <- k+1 }
}
}
if ( k==1 ){
return (TRUE)}else{
return (FALSE)}
跑得時候出現 錯誤: 沒有可回返的函式, 跳到最高層
請問是哪裡有問題
後面的程式
for(a in 1:70)
for(b in 1:70)
{
if((a+b==70)&&(my.coprime(a,b))&&(a/b>=0.55)&&(a/b<0.65))
{ msg <- sprintf("%d/%d",a,b)
print(msg) }
}
homework <- function(Sum=70, Div=0.6, Dec=1){
do.call(c,lapply(1:Sum, function(x){
y=Sum-x
tmp <- round(x/y, Dec)
if(tmp == Div){
return(paste(x,"/",y, sep = ""))
}
}))
}
my.coprime <- function(a, b) {
k <- 1 # 公因數數目. 必然有 1 這個公因數
for (i in min(a, b):2) { # 從大到小找公因數. 最大值是 min(a, b).
# 如果可以找到同時整除 a 跟 b 的因數, 把 k + 1.
k <- k + ifelse(a %% i ==0 && b %% i == 0, 1, 0)
}
return(ifelse(k == 1, TRUE, FALSE)) # 如果公因數只有 1 則為 TRUE, 否則為 FALSE
}
或是用 gcd
my.gcd <- function(a, b) {
ifelse(a %% b, gcd(b, a %% b), b) == 1
}
迴圈部份
for(a in 1:70) {
b <- 70 - a
if ((my.coprime(a,b)) && round(a/b*10) == 6) {
msg <- sprintf("%d/%d", a, b)
print(msg)
}
}