Поделитесь своими знаниями, ответьте на вопрос:
Любое составное натуральное число K можно разложить на множители (например: 6=2*3; 220=2*2*5*11 Петя заинтересовался разложением чисел на множители. Но среди всех чисел он выделяет лишь те числа, в разложении которых встречаются только 3, 5 и 7 (например: 45=3*3*5; 49=7*7). Весь вечер он вычислял и получил, что самое первое число, в разложении которого присутствуют только числа 3, 5 и 7 это число 9, следующее число 15, затем 21. Петя начал строить ряд таких чисел. Он нашёл первые 10 чисел своего ряда: 9, 15, 21, 25, 27, 35, 45, 49, 63, 75. Петя не хочет останавливаться на достигнутом и решил найти 200 чисел. Составьте программу, которая Пете с++
```cpp
#include
int main() {
int count = 0; // счетчик найденных чисел
int number = 9; // начальное число
while (count < 200) { // пока не найдено 200 чисел
int temp = number; // сохраняем текущее число
bool isMatch = true; // флаг, указывающий, что число соответствует условию
while (temp > 0) {
int digit = temp % 10; // получаем последнюю цифру числа
if (digit != 3 && digit != 5 && digit != 7) { // если цифра не равна 3, 5 или 7
isMatch = false; // число не соответствует условию
break;
}
temp /= 10; // удаляем последнюю цифру из числа
}
if (isMatch) {
std::cout << number << " "; // выводим число, которое удовлетворяет условию
count++; // увеличиваем счетчик найденных чисел
}
number++; // переходим к следующему числу
}
return 0;
}
```
Объяснение:
- Мы используем переменные `count` для подсчета найденных чисел и `number` для хранения текущего числа в ряду.
- Мы используем цикл `while`, чтобы продолжать поиск чисел, пока не будет найдено 200 чисел.
- Внутри цикла мы проверяем каждое число на соответствие условию.
- Мы сохраняем текущее число во временной переменной `temp`, чтобы не изменять его значение.
- Затем мы проверяем каждую цифру числа, начиная с последней, с помощью операции остатка от деления на 10 и записываем в переменную `digit`.
- Если цифра не равна 3, 5 или 7, то число не соответствует условию и мы устанавливаем флаг `isMatch` в false и выходим из внутреннего цикла с помощью оператора `break`.
- Если все цифры удовлетворяют условию, то флаг `isMatch` остается true и мы выводим число на экран с помощью `std::cout`.
- Затем мы увеличиваем счетчик `count` и переходим к следующему числу путем инкрементирования переменной `number`.
- Программа будет продолжать выполняться до тех пор, пока не будет найдено 200 чисел удовлетворяющих условию.
Это решение позволит Пете найти первые 200 чисел ряда, в разложении которых присутствуют только числа 3, 5 и 7.