• Предмет: Информатика
  • Автор: moonlight0979
  • Вопрос задан 3 месяца назад

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

Ответы

Ответ дал: daumkon
0

#include <iostream>

// Функция для вычисления суммы цифр числа

int sumOfDigits(int num) {

int sum = 0;

while (num > 0) {

sum += num % 10;

num /= 10;

}

return sum;

}

// Функция для нахождения простого делителя с наибольшей суммой цифр

int findLargestSumDigitDivisor(int n) {

// Перебираем делители от 2 до корня из n

for (int divisor = 2; divisor * divisor <= n; divisor++) {

if (n % divisor == 0) {

// Если divisor - делитель n

// Находим сумму цифр делителя и сравниваем с максимальной суммой

int sum = sumOfDigits(divisor);

if (sum > maxSum) {

maxSum = sum;

largestSumDigitDivisor = divisor;

}

}

}

// Если n является простым числом, то наибольшая сумма цифр будет у самого числа

if (n > largestSumDigitDivisor) {

largestSumDigitDivisor = n;

}

return largestSumDigitDivisor;

}

int main() {

int n;

std::cout << "Введите натуральное число n: ";

std::cin >> n;

int largestSumDigitDivisor = findLargestSumDigitDivisor(n);

std::cout << "Простой делитель с наибольшей суммой цифр: " << largestSumDigitDivisor << std::endl;

return 0;

}

Вас заинтересует