Əgər — ədədinin bölənidirsə, onda də ədədinin bölənidir. Belə ki, əgər tam kvadraddırsa, o zaman bölənlər \sqrt{n} və n/\sqrt{n} üst-üstə düşürlər.
Alqoritmin reallaşdırılması
Giriş dəyəri -i oxuyuruq.
scanf("%d",&n);Bölənləri -dən \sqrt{n}-ə qədər istisna olmaqla yoxlayırıq.
for(i = 1; i < sqrt(n); i++)
if (n % i == 0)
{Əgər — ədədinin bölənidirsə, onda də həmin ədədin böləni olacaq.
v.push_back(i);
v.push_back(n / i);
}tam kvadrat olub-olmadığını yoxlayırıq. Bu halda \sqrt{n} bölənini vektorun içinə əlavə edirik.
i = sqrt(n);
if (i * i == n) v.push_back(i);Bölənləri artan sıralama ilə düzürük.
sort(v.begin(),v.end());Bütün bölənləri bir sətirdə çıxarırıq.
for(i = 0; i < v.size(); i++)
printf("%d ",v[i]);
printf("\n");Java reallaşdırılması
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
ArrayList<Integer> v = new ArrayList<Integer>();
for(int i = 1; i < Math.sqrt(n); i++)
if (n % i == 0)
{
v.add(i);
v.add(n / i);
}
int i = (int)Math.sqrt(n);
if (n % i == 0) v.add(i);
Collections.sort(v);
for(i = 0; i < v.size(); i++)
System.out.print(v.get(i) + " ");
System.out.println();
con.close();
}
}Python reallaşdırılması
import mathGiriş dəyəri -i oxuyuruq.
n = int(input())ədədinin bölənlərini siyahısına əlavə edəcəyik.
lst = []Bölənləri -dən \sqrt{n}-ə qədər istisna olmaqla yoxlayırıq.
for i in range(1,int(math.sqrt(n))):Əgər — ədədinin bölənidirsə, onda də həmin ədədin böləni olacaq.
if n % i == 0:
lst.append(i)
lst.append(n//i)tam kvadrat olub-olmadığını yoxlayırıq. Bu halda \sqrt{n} bölənini vektorun içinə əlavə edirik.
i = int(math.sqrt(n));
if n % i == 0: lst.append(i);Bölənləri artan sıralama ilə düzürük.
lst.sort()Bütün bölənləri bir sətirdə çıxarırıq.
print(*lst)