ruby-on-rails类用于grates公共分区
我正在尝试制作一个模型类,以找到2个数字的栅格公共划分。如果我加68和22,答案是2,是正确的,但如果我加678352,结果是326,是错误的!应该是2!有什么想法吗ruby-on-rails类用于grates公共分区,ruby-on-rails,Ruby On Rails,我正在尝试制作一个模型类,以找到2个数字的栅格公共划分。如果我加68和22,答案是2,是正确的,但如果我加678352,结果是326,是错误的!应该是2!有什么想法吗 def gcd if firstnumber > secondnumber div= firstnumber/ secondnumber ip=firstnumber % secondnumber fi = div / ip ip else i = firstnumber
def gcd
if firstnumber > secondnumber
div= firstnumber/ secondnumber
ip=firstnumber % secondnumber
fi = div / ip
ip
else
i = firstnumber
s = secondnumber
secondnumber = firstnumber
firstnumber = s
div= firstnumber/ secondnumber
ip=firstnumber % secondnumber
fi = div / ip ip
end
end
带回路
def gcd
a = firstnumber
b=secondnumber
ip = 50
if firstnumber > secondnumber
begin
fi=a/b
re=a%b
fi=b/re
re=re%b
ip=re
end until ip != 0
return re
end
else
i = firstnumber
s = secondnumber
secondnumber = firstnumber
firstnumber = s
div= firstnumber/ secondnumber
ip=firstnumber % secondnumber
fi = div / ip
ip
end
end
$end
同样的事情也发生了Ruby有一个类
Integer
,它的方法是gcd
。不要重新发明轮子。读这里
该方法的来源是
def gcd(n)
m = self.abs
n = n.abs
return n if m == 0
return m if n == 0
b = 0
while n[0] == 0 && m[0] == 0
b += 1; n >>= 1; m >>= 1
end
m >>= 1 while m[0] == 0
n >>= 1 while n[0] == 0
while m != n
m, n = n, m if n > m
m -= n; m >>= 1 while m[0] == 0
end
m << b
end
def gcd(n)
m=self.abs
n=n.abs
如果m==0,则返回n
如果n==0,则返回m
b=0
而n[0]==0&&m[0]==0
b+=1;n>>=1;m>>=1
结束
m>>=1,而m[0]==0
n>>=1,而n[0]==0
而m!=N
m、 n=n,如果n>m,则为m
m-=n;m>>=1,而m[0]==0
结束
我笑不!没有教我们ruby或RubyonRails。是给我的,我正在努力让它发挥作用
def gcd(n)
m = self.abs
n = n.abs
return n if m == 0
return m if n == 0
b = 0
while n[0] == 0 && m[0] == 0
b += 1; n >>= 1; m >>= 1
end
m >>= 1 while m[0] == 0
n >>= 1 while n[0] == 0
while m != n
m, n = n, m if n > m
m -= n; m >>= 1 while m[0] == 0
end
m << b
end