Belə ki, dəyəri kifayət qədər böyük deyil, dövrədə -in bütün mümkün qiymətlərini -dən -ə qədər tək-tək nəzərdən keçirmək və \lfloor n / m \rfloor = n~mod~m bərabərliyini yoxlamaq olar. Belə -lərin sayını sayırıq.
Misal
Məsələn, n = 20 üçün iki bərabər bölücü mövcuddur: və , çünki
20~/~9 = 20~mod~9 = 2;
20~/~19 = 20~mod~19 = 1
Alqoritmin implementasiyası
Giriş dəyəri -i oxuyuruq.
scanf("%d",&n);-in -ə bölünməsindən alınan kəsr hissəsi -in -ə bölünməsindən alınan qalıqla (qalıq) bərabər olan m~(2 \le m \le n) sayı olan dəyişənində toplama aparırıq.
res = 0;
for(m = 2; m <= n; m++)
if ((n / m) == (n % m)) res++;Cavabı çıxardırıq.
printf("%d\n",res); Java implementasiyası
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 implementasiyası
Giriş dəyəri -i oxuyuruq.
n = int(input())-in -ə bölünməsindən alınan kəsr hissəsi -in -ə bölünməsindən alınan qalıqla (qalıq) bərabər olan m~(2 \le m \le n) sayı olan dəyişənində toplama aparırıq.
res = 0
for m in range(2,n) :
if (n // m == n % m) : res += 1Cavabı çıxardırıq.
print(res)