Bir ədədi sade adlanır, əgər o, yalnız özü və birini bölən olaraq qəbul edirsə.
Teorem. Əgər ədəd mürəkkəbdirsə, o zaman onun mütləq \sqrt{n}-dan böyük olmayan bir böləni vardır.
Sübut. Tutaq ki, — mürəkkəb ədəd və — onun bölənidir. Onda da -in bölənidir. Fərz edək ki, -in bütün bölənləri \sqrt{n}-dan böyükdür. O halda d > \sqrt{n} və n / d > \sqrt{n} bərabərsizlikləri eyni anda həyata keçir. Bu bərabərsizlikləri vuraraq:
yəni n > n. Bu ziddiyyətə gətirir. Beləliklə, əgər ədəd mürəkkəbdirsə, onun ən azı bir böləni \sqrt{n}-dan kiçik və ya bərabərdir.
Bir ədədin sadə olub-olmadığını yoxlamaq üçün onu -dən \sqrt{n} daxil olmaqla bir çox ədədə bölünüb-bölünmədiyini yoxlamaq kifayətdir. Əgər bu ədədlərdən ən az birinə bölünürsə, o zaman mürəkkəbdir. Əks halda sadədir.
Alqoritmin tətbiqi
Giriş dəyəri -i oxuyuruq.
scanf("%d",&n);flag = 1 bayrağını qururuq. Bu o deməkdir ki, ehtimal edilən sadədir.
flag = 1;-dən \sqrt{n} daxil olmaqla ədədinin bütün mümkün bölənlərini təkrarlayırıq. Əgər , -yə bölünürsə, mürəkkəbdir, buna görə də flag = 0 təyin edirik.
for (i = 2; i <= sqrt(n); i++)
if (n % i == 0)
{
flag = 0;
break;
}dəyərindən asılı olaraq cavabı çap edirik.
if (flag == 0) printf("No\n");
else printf("Yes\n");Alqoritmin tətbiqi — funksiya
IsPrime funksiyası ədədinin sadə olub-olmadığını yoxlayır.
int IsPrime(int n)
{
for (int i = 2; i <= sqrt(n); i++)
if (n % i == 0) return 0;
return 1;
}Proqramın əsas hissəsi. Giriş dəyəri -i oxuyuruq.
scanf("%d",&n);ədədinin sadə olub-olmadığından asılı olaraq cavabı çap edirik.
if (IsPrime(n)) printf("Yes\n");
else printf("No\n");Java tətbiqi
import java.util.*;
public class Main
{
static boolean IsPrime(int n)
{
for(int i = 2; i <= Math.sqrt(n); i++)
if (n % i == 0) return false;
return true;
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
if (IsPrime(n))
System.out.println("Yes");
else
System.out.println("No");
con.close();
}
}Python tətbiqi
import mathIsPrime funksiyası ədədinin sadə olub-olmadığını yoxlayır.
def IsPrime(n):
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0: return False
return TrueProqramın əsas hissəsi. Giriş dəyəri -i oxuyuruq.
n = int(input())ədədinin sadə olub-olmadığından asılı olaraq cavabı çap edirik.
if IsPrime(n):
print("Yes")
else:
print("No")