require 'prime' # @param n [Integer] Число, для которого нужно найти количество четных, не взаимно простых чисел. # @return [Integer] Количество четных чисел, не взаимно простых с данным числом. # @example # count_even_non_coprimes(30) # => 14 def count_even_non_coprimes(n) (1...n).count do |num| num.even? && n.gcd(num) != 1 end end # @param n [Integer] Число, цифры которого нужно проверить. # @return [Integer, nil] Максимальная цифра числа, не делящаяся на 3, или nil, если таких цифр нет. # @example # max_digit_not_divisible_by_three(483726) # => 8 def max_digit_not_divisible_by_three(n) n.digits.select { |digit| digit % 3 != 0 }.max end # @param n [Integer] Число, для которого нужно найти наименьший делитель. # @return [Integer] Наименьший делитель числа. # @example # smallest_divisor(30) # => 2 def smallest_divisor(n) (2..n).find { |i| n % i == 0 } end # @param n [Integer] Число, для которого нужно найти подходящее максимальное число. # @return [Integer, nil] Максимальное число, не взаимно простое с данным, не делящееся на наименьший делитель, или nil, если таких чисел нет. # @example # max_non_coprime_not_divisible_by_smallest_divisor(30) # => 28 def max_non_coprime_not_divisible_by_smallest_divisor(n) divisor = smallest_divisor(n) (1...n).select { |num| n.gcd(num) != 1 && num % divisor != 0 }.max end # @param n [Integer] Число, цифры которого нужно просуммировать. # @return [Integer] Сумма цифр числа, меньших 5. # @example # sum_of_digits_less_than_five(483726) # => 9 def sum_of_digits_less_than_five(n) n.digits.select { |digit| digit < 5 }.sum end # @param n [Integer] Число, для которого проводится вычисление. # @return [Integer] Произведение максимального числа и суммы цифр числа. # @example # product_of_max_and_sum(30) # => 252 def product_of_max_and_sum(n) max_number = max_non_coprime_not_divisible_by_smallest_divisor(n) sum_digits = sum_of_digits_less_than_five(n) max_number * sum_digits end puts count_even_non_coprimes(30) # => 14 puts max_digit_not_divisible_by_three(483726) # => 8 puts product_of_max_and_sum(30) # => 252