Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ Помогите сделать программу пожалуйста

Noris [002] Ученик (126), на голосовании 5 месяцев назад
c++
На вход подается натуральное четырехзначное число. Выведите наибольшие простое число, которое можно составить из цифр введеного числа не переставляя их порядок. Если из цифр невозможно составить натуральное число, то выводится 0. Например из числа 1737 можно выделить несколько простых чисел: 17, 7, 3, 73, 37, 137
Голосование за лучший ответ
contrlc contrlc Ученик (200) 6 месяцев назад
Лови:
 #include  
#include
#include
#include

bool is_prime(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; ++i)
if (n % i == 0) return false;
return true;
}

int main() {
std::string num;
std::cin >> num;
int max_prime = 0;

for (size_t i = 0; i < num.size(); ++i) {
for (size_t j = 1; j <= num.size() - i; ++j) {
int candidate = std::stoi(num.substr(i, j));
if (is_prime(candidate)) {
max_prime = std::max(max_prime, candidate);
}
}
}

std::cout << max_prime << '\n';
return 0;
}
Noris [002]Ученик (126) 6 месяцев назад
От души. Спасибо огромное
СергейГений (59760) 6 месяцев назад
substr не подходит. 137 не является подстрокой 1737.
Похожие вопросы