КОД НАПИШИТЕ НА ЯЗЫКЕ С++ Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в две соседних столбца на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке также должны следовать в порядке возрастания.
Например, в диапазоне [5; 9] ровно два целых различных натуральных делителя имеют числа 6 и 8, поэтому для этого диапазона вывод на экране должна содержать следующие значения:
2 3
2 4
В результате работы программа должна вывести следующее:
3 58153
7 24923
59 2957
13 13421
149 1171
5 3489
211 827
2 87251
на С++
```cpp
#include
#include
using namespace std;
// Функция для проверки, имеет ли число ровно два делителя
bool hasTwoDistinctDivisors(int number) {
int count = 0; // счетчик делителей
// Проверяем делители от 2 до корня из числа (достаточно проверить до корня)
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
count++;
if (i != number / i) {
count++;
}
}
// Если уже найдено больше двух делителей, выходим из цикла
if (count > 2) {
break;
}
}
// Возвращаем результат проверки
return count == 2;
}
int main() {
int lowerBound = 174457;
int upperBound = 174505;
// Вектор для хранения найденных чисел с двумя делителями
vector
// Поиск чисел с двумя делителями в данном диапазоне
for (int i = lowerBound; i <= upperBound; i++) {
if (hasTwoDistinctDivisors(i)) {
numbers.push_back(i);
}
}
// Вывод делителей каждого найденного числа в порядке возрастания произведения делителей
for (int i = 0; i < numbers.size(); i++) {
int number = numbers[i];
for (int j = 2; j <= number / 2; j++) {
if (number % j == 0) {
cout << j << " " << number / j << endl;
break;
}
}
}
return 0;
}
```
Давайте пошагово рассмотрим данный код.
1. Подключаем необходимые заголовочные файлы `
2. Используем пространство имен `std`, чтобы не писать `std::` перед каждым объектом из стандартной библиотеки.
3. Определяем функцию `hasTwoDistinctDivisors`, которая проверяет, имеет ли число `number` ровно два различных натуральных делителя (кроме 1 и самого числа).
4. В функции `main` создаем переменные `lowerBound` (нижняя граница диапазона) и `upperBound` (верхняя граница диапазона), соответствующие указанным значениям.
5. Создаем вектор `numbers` для хранения найденных чисел с двумя делителями.
6. Используя цикл `for`, проверяем каждое число в заданном диапазоне с помощью функции `hasTwoDistinctDivisors`. Если число имеет ровно два делителя, добавляем его в вектор `numbers`.
7. В цикле `for` выводим для каждого числа вектора `numbers` его два делителя, разделенных пробелом. Мы начинаем проверку делителей с числа 2 и идем до половины числа (так как делимое не может быть больше половины).
8. Завершаем программу с помощью оператора `return 0`.
Теперь, когда у вас есть полное решение задачи, вы можете скопировать код и компилировать его в своей среде разработки, чтобы увидеть результат.