М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
beliaeva201
beliaeva201
27.06.2020 16:18 •  Информатика

КОД НАПИШИТЕ НА ЯЗЫКЕ С++ Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [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

на С++

👇
Ответ:
armvos
armvos
27.06.2020
Хорошо, я могу помочь вам с написанием кода на языке C++, который будет выполнять данную задачу. Вот полное решение:

```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 numbers;

// Поиск чисел с двумя делителями в данном диапазоне
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`.

Теперь, когда у вас есть полное решение задачи, вы можете скопировать код и компилировать его в своей среде разработки, чтобы увидеть результат.
4,4(48 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ