有人可以帮我解决一下如何在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
答案 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