Wszystkie dzielniki podanej liczby

Wszystkie dzielniki podanej liczby
IF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
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:

Kopiuj
         
{
            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

PE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
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 : )

IF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
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źć

PE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
1

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

Kopiuj
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:

Kopiuj
MOJATABLICA[counter]= "dzielniki liczby to " + liczba/liczba + ", " + i + ", " + liczba;
counter++;
dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
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);

IF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

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

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

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

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

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

IF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

dziękuję serdecznie za rady :)

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0

podejrzewam, że zamiana:

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

na:

Kopiuj
            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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.