Wszystkie dzielniki podanej liczby

0

Witam serdecznie. Mam problem ponieważ potrzebuję programu wyświetlającego wszystkie dzielniki podanej liczby jednak póki co udało mi się zrobić tylko coś takiego:

         
{
            int liczba = int.Parse(podaj.Text);
            for (int i = 1; i <= liczba/i; i++)
            {
                if (liczba % i == 0)
                {
                    komunikat.Text = "dzielniki liczby to " + liczba/liczba + ", " + i + ", " + liczba;

                }

            }
 }

czyli znajduje tylko jeden dzielnik + liczbę podzielną przez samą siebie i przez jeden :/

Wie ktoś może jak to poprawić, żeby wypisywał wszystkie dzielniki?
Pozdrawiam

0

Jeżeli nie wypisujesz od razu "komunikat.Text" na ekran bądź nie zapisujesz do tablicy to dostaniesz tylko ostatnią wartość i<=liczba/i
Musisz gdzieś to przechowywać albo wypisywać po kolei na ekran : )

0

Czyli jak mam to zrobić? w warunku mam stworzyć tablice? a potem wyświetlić jej zawartość? bo właśnie nie wiem za bardzo jak to ugryźć

1

Tablice stworzyć przed FOR, a później w IF dodać coś takiego

MOJATABLICA[i]= "dzielniki liczby to " + liczba/liczba + ", " + i + ", " + liczba;

//EDIT
To jednak głupi pomysł, lepiej zrób listę bo nie wiadomo jakiego rozmiaru będzie ta tablica i ile dzielników znajdziesz, więc albo przed FOR
stwórz Liste<String> mojaLista a w IF wstaw mojaLista.add("dzielniki liczby to " + liczba/liczba + ", " + i + ", " + liczba);
albo jeżeli to musi być tablica to przed FOR zrób zmienną int counter = 0; i w IF wstaw:

MOJATABLICA[counter]= "dzielniki liczby to " + liczba/liczba + ", " + i + ", " + liczba;
counter++;
2

Lepiej lista, skąd ma wiedzieć ile tych dzielników będzie?

Przed pętlą tworzysz List<int> listaDzielnikow = new List<int>();
i w pętli po prostu dodajesz dzielnik do listy listaDzielnikow.Add(i);

0

Mógłby ktoś z Was pokazać jak przerobić ten kod? Bo próbuję tę listę ale niestety ciągle coś wyrzuca.

1

Ani lista, ani tablica nie jest potrzebna. Można wypisywać dzielniki w locie.

0

Też można:
Przed pętlą komunikat.Text = "Dzielniki liczby to: ";
i w ifie komunikat.Text +=i+", ";

0

dziękuję serdecznie za rady :)

0

podejrzewam, że zamiana:

            for (int i = 1; i <= liczba/i; i++)
            {
                if (liczba % i == 0)

na:

            for (int i = 2; i <= liczba/i; i++)
            {
                while (liczba % i == 0)
                {
                    liczba /=i;
                   ...

wypisywanie 1 zawsze oraz dodawanie tekstu zamiast ustawiania go rozwiąze praktycznie wszystkie Twoje problemy

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