Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++]suma dzielników

Ostatnio zmodyfikowano 2015-02-02 18:46
Autor Wiadomość
pgpgpg
Temat założony przez niniejszego użytkownika
[c++]suma dzielników
» 2015-02-02 17:32:54
Za pierwszym razem mi pomogliście i udało mi się rozwiązać mój problem. Teraz niestety nie mam pomysłu i się męczę.... Mam do  napisania program który znajdzie liczbę należącą do przedziału 1..10000, której suma podzielników jest maksymalna.
Udało mi się wyznaczyć ich dzielniki ale nie umiem ich zsumować... Zawsze podstawia mi ostatni dzielnik co jest błędem.
Wklejam kod. Jest on już trochę przeczyszczony i brakuje w nim właśnie sumy i wypisywania liczb. Z chęcią wysłucham wszelkich rad i podpowiedzi. Na razie próbowałem tylko na zakresie 1..10 bo jakby na tym poszło to i na większym tez ;)
C/C++
#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
   
    int x = 10;
    int z = 0;
    int a = 0;
    int i;
    int max = 0;
   
    int suma = 0;
   
    for( int i = 1; i <= x; i++ )
    {
        cout << "\n\nLiczba " << i << " jej dzielniki to: ";
        for( int k = 1; k <= x; k++ )
        {
           
            // jeżeli x dzielone modulo przez i(licznik) jest równe zero to wypisz liczbę
            if( i % k == 0 )
            {
                cout << "\n " << k;
               
               
            }
           
        }
        cout << "\nich suma to: " << a << endl;
       
    }
   
    cout << "\n\n najwieksza liczba to: " << suma << endl;
    cout << "\nsuma jej podzielnikow to: " << z << endl;
   
   
    getch();
   
}
P-125878
michal11
» 2015-02-02 18:01:26
Po 1. wstawiaj kod w znaczniki
Po 2. nazywaj inaczej zmienne, bo takie a, b, c to nie wiadomo o co chodzi
Po 3. Właściwy problem:

Stwórz sobie 2 zmienne np. maxSuma, maxLiczba pod które będziesz zapisywał max sumę dzielników danej maxLiczby. Sumowanie dzielników do zmiennej pomocniczej (np. sumaPom) powinieneś robić w tym ifie
if( i % k == 0 )
.
Później jak już wyjdziesz z tego
for( int k = 1; k <= x; k++ )
 fora musisz sprawdzić czy aktualna suma (sumaPom) jest większa od dotychczasowej sumy (maxSuma). Jeżeli tak to podstaw pod maxSuma aktualna sumę a pod maxLiczba aktualna liczbe dla której szukałeś dzielników (w twoim przypadku będzie to i).

Nie zapomnij o inicjalizacji zmiennych zerami.
P-125879
pgpgpg
Temat założony przez niniejszego użytkownika
» 2015-02-02 18:24:48
dzięki za odpowiedź. Ale mam pytanie. Jeżeli mam SumPom to jak zrobić to w ifie by mi sumowało kolejne dzielniki?
P-125880
michal11
» 2015-02-02 18:27:38
sumPom+=k;
P-125881
pgpgpg
Temat założony przez niniejszego użytkownika
» 2015-02-02 18:46:39
Dzięki wielkie za pomoc ;) udało się zrobić :)
P-125884
« 1 »
  Strona 1 z 1