Число називається простим, якщо воно не має інших дільників, крім одиниці та самого себе.
Теорема. Якщо число складене, то воно обов'язково має дільник, що не перевищує \sqrt{n}.
Доказ. Нехай — складене число і — його дільник. Тоді також є дільником числа . Припустимо, що всі дільники числа більші за \sqrt{n}. Тоді одночасно виконуються нерівності d > \sqrt{n} і n / d > \sqrt{n}. Помноживши ці нерівності, отримуємо:
тобто n > n. Це призводить до протиріччя. Таким чином, якщо число складене, то принаймні один з його дільників не перевищує \sqrt{n}.
Для перевірки числа на простоту достатньо перевірити, чи ділиться воно на одне з чисел від до \sqrt{n} включно. Якщо ділиться принаймні на одне з цих чисел, то є складеним. В іншому випадку просте.
Реалізація алгоритму
Зчитуємо вхідне значення .
scanf("%d",&n);Встановимо прапор flag = 1. Це означає, що ймовірно є простим.
flag = 1;Перебираємо всі можливі дільники числа від до \sqrt{n} включно. Якщо ділиться на , то є складеним, тому встановлюємо flag = 0.
for (i = 2; i <= sqrt(n); i++)
if (n % i == 0)
{
flag = 0;
break;
}Залежно від значення виводимо відповідь.
if (flag == 0) printf("No\n");
else printf("Yes\n");Реалізація алгоритму — функція
Функція IsPrime перевіряє, чи є число простим.
int IsPrime(int n)
{
for (int i = 2; i <= sqrt(n); i++)
if (n % i == 0) return 0;
return 1;
}Основна частина програми. Зчитуємо вхідне значення .
scanf("%d",&n);Залежно від простоти числа виводимо відповідь.
if (IsPrime(n)) printf("Yes\n");
else printf("No\n");Java реалізація
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 реалізація
import mathФункція IsPrime перевіряє, чи є число простим.
def IsPrime(n):
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0: return False
return TrueОсновна частина програми. Зчитуємо вхідне значення .
n = int(input())Залежно від простоти числа виводимо відповідь.
if IsPrime(n):
print("Yes")
else:
print("No")