
Вопрос задан 21.06.2023 в 16:37.
Предмет Информатика.
Спрашивает Власова Алина.
С++.Даю 20 баллов. Есть код на нахождение количества и суммы делитель числа. Нужно его
оптимизировать. Выполняется очень долго сам код: #include < > int main() { int n, s = 0, ans = 0; std::cin >> n; for(int i = 1; i <= n; i++) { if(n % i == 0) { ans = ans + i; s++; } } std::cout << s << " " << ans; }

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

Отвечает Титова Валерия.
pair<int,int> dels(int k){
int sm = 0;
set<int> s;
for(int i = 1; i * i <= k; i++){
if(k % i == 0){
s.insert(i);
s.insert(k/i);
sm += i + k/i * (i != k/i);
}
}
return {s.size(), sm};
}
signed main(){
int n;
cin >> n;
pair<int, int> ans = dels(n);
cout << ans.first << " " << ans.second;
}



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для оптимизации кода нахождения количества и суммы делителей числа, вы можете использовать следующий код:
cpp#include <iostream>
int main() {
int n, s = 0, ans = 0;
std::cin >> n;
for (int i = 1; i <= n / 2; i++) {
if (n % i == 0) {
ans += i;
s++;
}
}
ans += n; // Добавляем само число в сумму делителей.
s++; // Увеличиваем количество делителей на 1, так как n делится само на себя.
std::cout << s << " " << ans;
return 0;
}
Этот код оптимизирован так, чтобы проходиться только до половины числа n
, так как все делители числа больше n / 2
можно найти, деля n
на делители меньше или равные n / 2
. Таким образом, вы сокращаете количество итераций в цикле, что ускоряет выполнение программы.


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