Argument na dzielniki.

0

Witam. Zatrzymałem się nad małym problemem.
Otóż muszę:
*pobierz od użytkownika ​iloscDzielnikow​ , a następnie wczytaj wszystkie dzielniki.
Po wczytaniu wszystkich dzielnikow wypisz wszystkie liczby od poczatekZakresu ​do ​koniecZakresu, które są podzielne
przez ​wszystkie dzielniki.

mój kod (jest w metodzie0, wszystko jest sprawne, ale niestety nie potrafię zbudować odpowiedniego argumentu, że mają być wypisane liczby z mojego zakresu (a->b, które są podzielne przez WSZYSTKIE dzielniki. A u mnie wypisuje każdą liczbę z zakresu od a do b, która dzieli się przez jakikolwiek dzielnik)

public static void CheckNumber2(int array[], int a, int b) {
        for (int i = a; i <= b; i++) {
            for (int j = 0; j < array.length; j++) {
                if (i % array[j] != 0){
                } else {
                    System.out.println(i);
                }
            }
        }
    }
}
0

Jesli chciałes podłechtać nasze ambicje projektowania obiektowego, i żeby nie pisac w main() użyłeś metody ...
no to nie udało się ... metoda statyczna to praktycznie nie metoda, taka jak tu to procedura jak za króla Ćwieczka ...

Zdanie o argumencie jest dla mnie zupełnie niezrozumiałe, widocznie w sobotę piliśmy co innego.
Za cholerę można zgadywać o czym myślałeś? O zmiennej logicznej ? O odwróceniu pętli ?

2

Podzielnymi liczbami będą wielokrotności, LCM podanych dzielników.

1
  • Obliczasz NWW () ze wszystkich dzielników;
  • Znajdujesz liczbę startową s=(a+NWW-1)/NWW*NWW;
  • for(;s<=b;s+=NWW) System.out.println(i);

NWW(a,b) = a*b/NWD(a,b);
NWW(a,b,c,d, ....) = NWW(NWW(a,b),c,d, ....)
NWD = https://www.algorytm.edu.pl/algorytmy-maturalne/algorytm-eulkidesa.html

1

Dzięki za odzew. Mam po prostu program, który robi inne rzeczy i mam je upakowane w metody, inne działają, a z tą mam problem bo po prostu nie robi to czego oczekuję. Ale generalnie tu chodzi o to, że są pobierane liczby w tablicy array, które są dzielnikami liczb w zakresie od a do b. I chodzi o to, że po prostu brakuje mi formuły, bo ta którą mam po if jest zła. Formuły która wypisze liczby (w zakresie od a do b), które dzielą sie przez dzielniki, ale te liczby z zakresu od a do b muszą wszystkie dzielić się przez poszczególne dzielniki. I tu leży problem. — Mateusz03929 dziś, 17:04

Musisz mieć w zewnętrznej pętli marker "jak na razie się dzieliły", aktualizować go w wewnętrznej i warunkowo drukować za wewnętrzną pętlą.

0

Jak studia, to wypisz wszystkie wielokrotności dzielników, które mieszczą się w zakresie. Zapoznaj się z Set, konkretnie HashSet wcześniej, żeby usunąć duplikaty.

Jak liceum, to:

public static boolean checkIfNumberDivide(int number, int[] dividers){
  for(int i = 0; i < dividers.length; i++){
    if(number % dividers[i] != 0){
      return false;
    }
  }
  return true;
}

Taka metoda załatwia ci sprawdzenie pojedynczej liczby. Zamiast zagnieżdżać pętle rób sobie więcej małych metod i odwołuj się do nich. Z przejściem po zakresie już sobie poradzisz.

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