Alqoritm Analizi
Bir ədədinin bölənlərinin sayını ilə işarə edək. Açıqdır ki, .
ədədi əsas ədəd olsun. Onda -nin iki böləni var: 1 və . Beləliklə, .
ədədi bir əsas ədədin qüvvəti olsun. Onda -in böləni var: 1, , , , …, . Beləliklə, .
olsun. İki dəstəni nəzərdən keçirək:
və
ədədinin hər hansı bir böləni kimi təsvir edilə bilər, burada . dəstəsindən böləni şəkildə, dəstəsindən böləni şəkildə seçilə bilər. Beləliklə, böləni şəkildə formalaşdırıla bilər.
ədədini əsas amillərə ayıraq: . ədədinin bölənlərinin sayı
Nümunə
ədədinin 6 böləni var: 1, 2, 3, 6, 9, 18.
ədədini əsas amillərə ayıraq:
Beləliklə
İki bölən (1 və 18) çıxardıldıqda cavabı alırıq: 4 bölən.
Alqoritm Tətbiqi
CountDivisors
funksiyası ədədini əsas amillərə ayırır və onun bölənlərinin sayını hesablayır.
int CountDivisors(int n) { int c, i, res = 1; for(i = 2; i * i <= n; i++) { if (n % i == 0) { c = 0; while(n % i == 0) { n /= i; c++; } res *= (c + 1); } } if (n > 1) res *= 2; return res; }
Proqramın əsas hissəsi. Giriş dəyəri -i oxuyuruq.
scanf("%d",&n);
Cavabı hesablayıb göstəririk. -in ümumi bölənlərinin sayından iki bölən çıxarırıq: 1 və öz ədədi.
printf("%d\n",CountDivisors(n)-2);
Python Tətbiqi
import math def CountDivisors(n): res = 1 for i in range(2, int(math.sqrt(n)) + 1): if (n % i == 0): c = 0 while (n % i == 0): n //= i c += 1 res *= (c + 1) if (n > 1): res *= 2 return res n = int(input()) print(CountDivisors(n) - 2)