Знайти натуральне число від 1 до 10000 з максимальною сумою дільників.
МОВА C++
Ответы
Ось приклад того, як ви могли б вирішити цю проблему на C++:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int maxSum = 0, maxNum = 0;
for (int i = 1; i <= 10000; i++) {
int sum = 0;
for (int j = 1; j <= sqrt(i); j++) {
if (i % j == 0) {
sum += j;
if (j != i / j) {
sum += i / j;
}
}
}
if (sum > maxSum) {
maxSum = sum;
maxNum = i;
}
}
cout << "The number with the maximum sum of divisors is: " << maxNum << endl;
cout << "The sum of its divisors is: " << maxSum << endl;
return 0;
}
Ця програма використовує вкладений цикл для перебору кожного числа від 1 до 10000 і знаходження суми його дільників. Сума дільників обчислюється за формулою: sum = sum + j + i / j, де j - дільник i. функція sqrt використовується для оптимізації обчислень шляхом перевірки тільки дільників з точністю до квадратного кореня з i. після кожної ітерації програма перевіряє, чи більше сума дільників поточної максимальної суми, і якщо так, оновлює максимальну суму і відповідне число. Кінцевим результатом є число з максимальною сумою дільників і його сумою.