Рівні дільники#446

Рівні дільники (Розбір)

Оскільки значення не надто велике, можна перебрати в циклі всі можливі значення від до і перевірити виконання рівності \lfloor n / m \rfloor = n~mod~m. Підраховуємо кількість таких .

Приклад

Наприклад, для n = 20 існують два рівних дільника: і , так як

Реалізація алгоритму

Читаємо вхідне значення .

scanf("%d",&n);

У змінній підраховуємо кількість таких чисел m~(2 \le m \le n), для яких частка від ділення на дорівнює остачі від ділення на .

res = 0;
for(m = 2; m <= n; m++)
  if ((n / m) == (n % m)) res++;

Виводимо відповідь.

printf("%d\n",res);	

Java реалізація

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
    int res = 0;
    for(int m = 2; m <= n; m++)
      if ((n / m) == (n % m)) res++;
    System.out.println(res);
    con.close();
  }
}

Python реалізація

Читаємо вхідне значення .

n = int(input())

У змінній підраховуємо кількість таких чисел m~(2 \le m \le n), для яких частка від ділення на дорівнює остачі від ділення на .

res = 0
for m in range(2,n) :
  if (n // m == n % m) : res += 1

Виводимо відповідь.

print(res)