Suma dzielników
Ostatnio zmodyfikowano 2016-03-10 11:56
skibixd Temat założony przez niniejszego użytkownika |
» 2016-03-10 10:05:56 #include <iostream>
using namespace std;
int main() { { int * tab; int N, i, suma; cin >> N; tab = new int[ N ]; for( i = 0; i < N; ++i ) { suma = 0; cin >> tab[ i ]; for( int j = 1; j <= tab[ i ]; j++ ) { if(( tab[ i ] % j ) == 0 ) { suma = suma + j; } } cout << "SUMA: " << suma << endl; } delete[] tab; return 0; } }
Np. przy 6 suma dzielników według kodu wynosi 12, a nie 6. Dlatego, że liczbę 6 bierze jako dzielnik 6 i dodaje. Nie powinno tak być. Trzeba kazać programowi omijać ostatnią liczbę. W zadaniu chodzi o naturalne dzielniki włąściwe, przepraszam, że nie sprecyzowałem na początku. |
|
carlosmay |
» 2016-03-10 10:11:07 Np. przy 6 suma dzielników według kodu wynosi 12, a nie 6. Dlatego, że liczbę 6 bierze jako dzielnik 6 i dodaje. |
6 też jest dzielnikiem liczby 6. |
|
skibixd Temat założony przez niniejszego użytkownika |
» 2016-03-10 10:11:49 Naturalne dzielniki wlasciwe. |
|
carlosmay |
» 2016-03-10 10:23:56 Naturalne dzielniki wlasciwe. |
Czyli? Jeśli program ma pominąć dzielniki trywialne, to je pomiń. Wtedy też suma dzielników liczby 6 nie będzie 6, tylko 5. |
|
skibixd Temat założony przez niniejszego użytkownika |
» 2016-03-10 10:31:06 Liczba doskonała jest liczbą naturalną, która jest równa sumie wszystkich swoich naturalnych dzielników właściwych.
6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 |
|
carlosmay |
» 2016-03-10 10:39:11 Pierwsza poprawka reguluje dzielenie przez samą siebie. Warto by dodać warunek sprawdzający, czy liczba jest doskonałą. |
|
mokrowski |
» 2016-03-10 11:56:45 Co do błędu w samym kodzie i w trybie tzw. "minimalnych poprawek" to.. #include <iostream>
using namespace std;
int main() { { int * tab; int N, i, suma = 0; cin >> N; tab = new int[ N ]; for( i = 0; i < N; ++i ) { cin >> tab[ i ]; suma = 0; for( int j = 1; j < tab[ i ] + 1; j++ ) { if(( tab[ i ] % j ) == 0 ) suma = suma + j; } cout << "SUMA: " << suma << endl; } delete[] tab; return 0; } }
A nad brakiem optymalności tego algorytmu i logiką kodu nie będę się pastwił chyba że wyraźnie poprosisz. |
|
1 « 2 » |