初学者的分工和循环

时间:2013-03-28 21:35:59

标签: ruby loops recursion

有人可以帮我解决一下如何在Ruby中做到这一点吗?

我有一个整数数组。对于每个整数,我需要找到一个两位数的除数(整数也是如此)。现在,代码循环到无穷大。我想要的答案是:

int_a = 2, int_b = 11, and x = 22

以下是代码:

[22, 33].each do |x| 
  x.to_f
  int_a = 1
  int_b = x.quo(int_a)

     until int_a > 15 || int_b%2==0 && sprintf("%g", int_b).to_s.length == 2 
        puts "#{x}"
        puts "#{int_a}"
        puts "#{int_b}"  
     end  
  int_a += 1
 end

2 个答案:

答案 0 :(得分:1)

我无法理解您的代码,但根据您的定义:

对于每个整数,我需要找到一个两位数的除数(整数也是)

尝试一下:

numbers = [22,33]
numbers.map do |n|
  raise "invalid number" if n < 10
  div = 10.0
  div += 1 while (n%div) != 0
  div
end
#result: [11,22]

答案 1 :(得分:0)

作为@fotanus,我无法理解你的代码,但回答你的问题,我刚才用这段代码来找到除数:

require 'prime'

def divisors_for(n)
  n.prime_division.map do |n,mp|
    (0..mp).map { |i| n**i }
  end.inject([1]) do |a, factor_group|
    a.product(factor_group)
  end.map do |factors|
    factors.flatten.reduce(:*)
  end - [n]
end

[22, 23].map do |n|
  divisors_for(n).select { |d| d.to_s.size == 2 }
end