1

Rubyでこれを行う方法を理解するのを手伝ってくれる人はいますか?

整数の配列があります。これらの整数のそれぞれについて、2 桁の長さ (整数も同様) の除数を見つける必要があります。現在、コードは無限にループしています。私が得ようとしている答えは次のとおりです。

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
4

2 に答える 2

1

私はあなたのコードを理解できませんが、あなたの定義によると:

これらの整数のそれぞれについて、2 桁の長さの除数を見つける必要があります (整数も同様です)。

これを試してください:

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]
于 2013-03-28T22:06:16.630 に答える
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
于 2013-03-28T22:34:26.830 に答える