
Решите задачу на на c++: Задано целое натуральное число n. Выведите простой делитель числа n с
наибольшей суммой цифр. Гарантируется, что такой делитель будет ровно один..

Ответы на вопрос

Ответ:
#include <iostream>
// Функция для вычисления суммы цифр числа
int sumOfDigits(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int main() {
int n;
std::cout << "Введите натуральное число n: ";
std::cin >> n;
// Поиск простого делителя с наибольшей суммой цифр
int maxSum = 0;
int maxDivisor = 1;
for (int i = 2; i <= n; ++i) {
if (n % i == 0) {
int currentSum = sumOfDigits(i);
if (currentSum > maxSum) {
maxSum = currentSum;
maxDivisor = i;
}
}
}
std::cout << "Простой делитель с наибольшей суммой цифр: " << maxDivisor << std::endl;
return 0;
}
Программа сначала запрашивает натуральное число n, а затем находит простой делитель этого числа с наибольшей суммой цифр.



Для решения этой задачи на C++ мы можем использовать следующий алгоритм:
- Создайте функцию для вычисления суммы цифр в числе.
- Начните итерироваться от 2 до корня из n.
- Проверьте, делится ли n на текущее значение без остатка.
- Если делится, найдите сумму цифр в этом делителе.
- Сравните сумму цифр текущего делителя с максимальной суммой, которую вы видели до этого.
- Если сумма цифр текущего делителя больше максимальной суммы, обновите максимальную сумму и сохраните текущий делитель как "лучший" делитель.
- После завершения итераций выведите "лучший" делитель.
Вот C++ код, который решает эту задачу:
cpp#include <iostream>
#include <cmath>
// Функция для вычисления суммы цифр в числе
int sumOfDigits(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int main() {
int n;
std::cout << "Введите натуральное число n: ";
std::cin >> n;
int bestDivisor = -1; // Лучший делитель
int maxDigitSum = 0; // Максимальная сумма цифр
// Итерируемся от 2 до корня из n
for (int i = 2; i <= sqrt(n); ++i) {
if (n % i == 0) {
int digitSum = sumOfDigits(i);
if (digitSum > maxDigitSum) {
maxDigitSum = digitSum;
bestDivisor = i;
}
}
}
// Проверяем, может быть само число n - лучший делитель
int digitSumN = sumOfDigits(n);
if (digitSumN > maxDigitSum) {
bestDivisor = n;
}
std::cout << "Простой делитель с наибольшей суммой цифр: " << bestDivisor << std::endl;
return 0;
}
Этот код позволяет ввести натуральное число n
и находит простой делитель с наибольшей суммой цифр.


Похожие вопросы







Топ вопросов за вчера в категории Информатика








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