Polecenie wygląda tak :
Napisz program, który pobierze ze standardowego wejścia liczbę naturalną, następnie na standardowym wyjściu napisze czy jest ona liczbą doskonałą czy nie. Program ma wypisać odpowiedź tak lub nie.
Liczba doskonała - liczba naturalna, która jest sumą wszystkich swych dzielników mniejszych od niej samej. Najmniejszą liczbą doskonałą jest 6, ponieważ 6 = 3 + 2 + 1.
Podpowiedz:
W zadaniu trzeba wyznaczyć sumę dzielników liczby. Można to zrobić deklarując zmienną s, która będzie przechowywać wartość sumy dzielników. Zmiennej s na początku przypisujmy wartość zero. Ważne jest, by zmienną s zadeklarować i przypisać jej początkową wartość przed pętlą, w której będziemy szukać dzielników. Następnie, gdy znajdziemy kolejny dzielnik, dodajemy go do zmiennej s. Po znalezieniu wszystkich dzielników zmienna s będzie zawierała ich sumę.
Problem:
Czy dobrze wykonałem to zadanie? Czy nie powinienem wyświetlić jeszcze w wyniku, że np. 6=1+2+3?
Mój kod:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int x,s=0,licz=0;
cin >> x;
for (int i=1;i<x;i++)
{
if (x%i==0)
{
s+=i;
licz++;
}
}
system("cls");
if (s==x)
{
cout << "TAK" << endl;
cout << s/licz << endl; // Błędna linijka
}
else cout << "NIE" << endl;
return 0;
}
//Kod wstawiamy w odpowiednie dla niego bloki. http://forum.pasja-informatyki.pl/faq