ədədinin bütün mümkün bölənlərini -dən başlayaq \sqrt{n}-ə qədər olan intervalda nəzərdən keçirək və ən kiçiyini tapaq. Əgər [2; \sqrt{n}] intervalında bölənlər tapılmasa, nəticə olaraq sadəcə ədədinin özünü alacağıq.
Misal
Əgər n = 21, onda ən kiçik bölən olacaq.
Əgər n = 13 (sadə ədəd), onda ən kiçik bölən olacaq.
Alqoritmin icrası
Giriş ədədini oxuyuruq.
scanf("%d", &n);flag = 0 olaraq təyin edirik. ədədinin mümkün bölənlərini -dən \sqrt{n}-ə qədər intervalda nəzərdən keçiririk. İlk (ən kiçik) bölən tapıldığında flag = 1 təyin edirik, tapılmış böləni çıxarırıq qə və döngünü sonlandırırıq.
flag = 0;
for (i = 2; i <= sqrt(n); i++)
if (n % i == 0)
{
printf("%d\n", i);
flag = 1;
break;
}Əgər bölən tapılmasa, deməli, ədədi sadədir. Bu halda sadəcə ədədinin özünü çıxarırıq.
if (flag == 0) printf("%d\n", n);Java icrası
import java.util.*;
class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
int flag = 0;
for (int i = 2; i <= Math.sqrt(n); i++)
if (n % i == 0)
{
System.out.println(i);
flag = 1;
break;
}
if (flag == 0) System.out.println(n);
con.close();
}
}Python icrası
import mathGiriş ədədini oxuyuruq.
n = int(input())ədədinin mümkün bölənlərini -dən \sqrt{n}-ə qədər intervalda nəzərdən keçiririk. İlk (ən kiçik) bölən tapıldığında onu çıxarır və döngünü sonlandırırıq.
for i in range(2, math.isqrt(n)+1):
if n % i == 0:
print(i)
breakƏgər döngü təbii şəkildə (break istifadə edilmədən) sona çatırsa, else bloku icra olunacaq.
Əgər bölən tapılmasa, deməli ədədi sadədir. ədədinin özünü çıxarırıq.
else: # döngü bitərsə buraya keçəcəyik
print(n)