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

Программирование на языке С++ помогите решить

Сергей Анфилофьев Ученик (84), на голосовании 5 месяцев назад
Дано натуральное число N. Составить функцию, возвращающую True, если число является совершенным и False – в противном случае. Совершенное число N равно сумме всех своих делителей, не превосходящих само N (28=1+2+4+7+14) Решить на С++
Голосование за лучший ответ
GGG Просветленный (36202) 6 месяцев назад
 #include  

using namespace std;

bool isPerfectNumber(int N) {
if (N <= 1) {
return false;
}

int sumOfDivisors = 1;
for (int i = 2; i * i <= N; ++i) {
if (N % i == 0) {
sumOfDivisors += i;
if (i * i != N) {
sumOfDivisors += N / i;
}
}
}

return sumOfDivisors == N;
}

int main() {
int N;
cout << "Введите натуральное число N: ";
cin >> N;

if (isPerfectNumber(N)) {
cout << N << " - совершенное число" << endl;
} else {
cout << N << " - не совершенное число" << endl;
}

return 0;
}
Сергей АнфилофьевУченик (84) 6 месяцев назад
родной в консоли ничего не пишет в чем можеть быть причита
я вижу что в cout есть пропись но там она не упоминается
GGG Просветленный (36202) Сергей Анфилофьев, А так?
Krab Bark Искусственный Интеллект (294824) 6 месяцев назад
#include <iostream>
using namespace std;
bool perf(long x){long n=0,m,s=0; m=x>>1; while(++n<=m)if(x%n==0)s+=n; return x==s;}
int main(){long x; cout<<"N: "; cin>>x; cout<<boolalpha<<perf(x)<<endl;}
Похожие вопросы