
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "Введите значение X: ";
cin >> x;
if (x >= -4 && x <= 1)
{
cout << "1";
}
else
{
cout << "0";
}
}
Объяснение:
#include <iostream> // Библиотека ввода - вывода
using namespace std; // Пространство имён
int main()
{
int x; // Создание целочисленной переменной x
cout << "Введите значение X: "; // Вывод сообщения в консоль
cin >> x; // Вводим значение с клавиатуры
if (x >= -4 && x <= 1) // Если значение переменной x ≥ -4 И ≤ 1
{
cout << "1"; // Выводим 1
}
else // Иначе
{
cout << "0"; // Выводим 0
}
}
Пояснення:В качестве кандидатов нужно рассматривать числа, не превышающие
(
S
−
1
)
2
, так как в худшем случае составное число вида
x
2
будет иметь два наибольших делителя
x
и 1. Время работы этого алгоритма
O
(
S
4
)
. Можно существенно ускорить вычисления, если учесть, что при поиске разложения на множители числа
N
можно рассмотреть только числа не превышающие
√
N
. Наибольшим делителем числа
N
будет
N
a
, где
a
– наименьший делитель, а вторым наибольшим делителем будет либо
N
b
, где
b
– второй по величине делитель
N
(также либо число, либо
a
2
), либо
a
, если
N
является произведением двух различных чисел, либо 1, если
N
=
a
2
.