przerobka programu

0

Hej, napisałem programik ktory sprawdza czy podane na wejsciu z klawiatury dwie liczby są zaprzyjaznione tzn, czy suma dzielnikow liczby pierwszej jest rowna liczbie drugiej i suma dzielnikow liczby drugiej jest rowna liczbie pierwsze np 284 i 220, problem tkwi w tym ze musze go troche przerobic a nie wiem jak to zrobic, otoż program ma wyszukac w przedziale liczbowym takie liczby i jesli je znajdzie zapisac je do pliku, nie wiem za bardzo jak to zrobic z tym przeszukaniem przedzialu, domyslam sie ze bedzie potrzebny for ale serio jakos nie mam pomyslu, a co do zpaisania do pliku to rozumiem ze trzeba po prostu wywalic couta i w jego miejsce dac ofstrem nazwa_zmiennej("nazwa_pliku") tak? Czy ktos podejmie sie przerobki tego programu, bede bardzo wdzieczny :

int main ()
{
int liczba;
int liczba1;
int suma=0;
int suma1=0;

    cout << "podaj pierwsza liczbe:";
    cin>>liczba;
    cout <<"podaj druga liczbe:";
    cin>>liczba1;
        for (int i=1; i<=(liczba/2); i++)
        {
            if (liczba%i==0)
            suma+=i;
        }
        for (int g=1; g<=(liczba/2); g++)
        {
            if (liczba1%g==0)
            suma1+=g;
        }
            if (suma==liczba1 && suma1==liczba )
            cout<< "liczby sa zaprzyjaznione\n";
            else
            cout<<"liczby nie sa zaprzyjaznione\n";

  system("pause");
  return 0; 
}

code - msm

0

Robisz tablicę wielkości przedziału (największa liczba odjąć najmniejsza), wpisujesz do niej sumy dzielników liczb z przedziału , i potem forem iterujesz po tej tablicy jeśli pod tab[n] masz m, a pod tab[m] masz n, to są liczby zaprzyjaźnione. Sprawdzasz naturalnie tylko jeśli m mieści się w przedziale, i n jest mniejsze niż m (żeby nie wypisywać po kilka razy tych samych).

1 użytkowników online, w tym zalogowanych: 0, gości: 1