В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
J22UKR
J22UKR
25.06.2020 07:25 •  Информатика

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

на С++

Показать ответ
Ответ:
BigD13
BigD13
25.01.2024 17:25
Хорошо, я могу помочь вам с написанием кода на языке 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`.

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