Уровень 10.5 задачника Rust

Задание 1

Дано число. Выведите на экран процесс разложения числа на простые множители, как в школе.

Задание 2

Дан произвольный двухмерный массив:

rust[
  [11, 12, 13, 14, 15],
  [21, 22, 23, 24, 25],
  [31, 32, 33, 34, 35],
  [41, 42, 43, 44, 45],
  [51, 52, 53, 54, 55],
}

Обнулите элементы его главной диагонали:

rust[
  [ 0, 12, 13, 14, 15],
  [21,  0, 23, 24, 25],
  [31, 32,  0, 34, 35],
  [41, 42, 43,  0, 45],
  [51, 52, 53, 54,  0],
}
Задание 3

Сделайте функцию, которая будет устанавливать правильную форму существительного после числа. Вот как должна работать эта функция:

rustfunc(1, "яблоко", "яблока", "яблок"); // выведет "1 яблоко"
func(2, "яблоко", "яблока", "яблок"); // выведет "2 яблока"
func(3, "яблоко", "яблока", "яблок"); // выведет "3 яблока"
func(4, "яблоко", "яблока", "яблок"); // выведет "4 яблока"
func(5, "яблоко", "яблока", "яблок"); // выведет "5 яблок"

Вот пример для для двухзначных чисел:

rustfunc(11, "яблоко", "яблока", "яблок"); // выведет "11 яблок"
func(12, "яблоко", "яблока", "яблок"); // выведет "12 яблок"
func(21, "яблоко", "яблока", "яблок"); // выведет "21 яблоко"
func(23, "яблоко", "яблока", "яблок"); // выведет "23 яблока"

Наш метод должен работать для чисел любой длины:

rustfunc(1223421, "яблоко", "яблока", "яблок"); // выведет "1223421 яблоко"