Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby-on-rails类用于grates公共分区_Ruby On Rails - Fatal编程技术网

ruby-on-rails类用于grates公共分区

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

我正在尝试制作一个模型类,以找到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 
    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