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

Помогите с задачкой в С++

Гитарный Гений))) Профи (678), закрыт 3 недели назад
Число совершенно, если оно равно сумме всех своих делителей,
кроме самого себя. Пример: 6 = 1 + 2 + 3. Найдите все совершенные
числа от 1 до 10000 и выведите их на экран.Пример как надо делать на фото
Лучший ответ
Николай Веселуха Высший разум (377956) 3 недели назад
 #include <iostream> 
using namespace std;
int main() {
for (auto n = 1; n <= 10000; ++n) {
const auto m = n >> 1;
auto sum = 0;
for (auto i = 1; i <= m; ++i)
if (0 == n % i)
sum += i;
}
if (sum == n)
cout << n << '\n';
}
}
Остальные ответы
Micropisich (6см) Гуру (3688) 3 недели назад
ну и чё? вот те код иди компилируй
Гитарный Гений)))Профи (678) 3 недели назад
Но как мне сделать, чтобы число былосовершенно, если оно равно сумме всех своих делителей,
кроме самого себя?
Пример: 6 = 1 + 2 + 3.
Гитарный Гений))), 1) дизлайнкуть ответ тупого дауна 2) прочитать статью в Википедии о совершенных числах Мерсенна
Гитарный Гений)))Профи (678) 3 недели назад
На фото пример, а мне надо переделать код, чтобы получилось, что число совершенно, если оно равно сумме всех своих делителей,
кроме самого себя.
Но как это делается - я не знаю!
Krab Bark Искусственный Интеллект (298959) 3 недели назад
Поиск делителей можно вести только до корня из очередного числа и добавлять сразу пару делителей (в случае именно корня только один).

#include <iostream>
#include <cmath>
using namespace std;
int main(){
for (int a=2;a<=10000;++a){
int d=1, m=std::sqrt(a); if(m*m<a)++m;
for(int n=2;n<m;++n)if(a%n==0)d+=n+a/n;
if(m*m==a)d+=m;
if(d==a)std::cout<<a<<'\n';}}
Похожие вопросы