Təbii ədədləri x = 1, 2, 3, ... olaraq keçirik. Hər üçün onun bölənlərinin sayını hesablayırıq. Bölənlərinin sayı olan bir ədəd tapılan kimi onu çıxarış edirik və işi bitiririk.
Bu həll vaxt məhdudiyyətinə uyğun gəlir, çünki dəyəri böyük deyil. Məsələn, n = 16 üçün cavab -dır.
Alqoritmin reallaşdırılması
Divisors funksiyası sadə ədədlərin bütün mümkün bölənlərindən -dən -ə qədər sayını hesablayır.
int Divisors(int n)
{
int res = 0, i;
for (i = 1; i <= n; i++)
if (n % i == 0) res++;
return res;
}Proqramın əsas hissəsi. Giriş dəyəri -i oxuyuruq — tələb olunan bölənlərin sayı.
scanf("%d",&n);Müntəzəm olaraq təbii ədədləri i = 1, 2, 3, ... keçirik və hər biri üçün bölənlərin sayını hesablayırıq. Bölənlərinin sayı dəqiq olan ədəd tapılan zaman dövr qırılır.
for (i = 1; ; i++)
{
d = Divisors(i);
if (d == n) break;
}Cavabı çıxarırıq.
printf("%d\n",i);