🦮 Liczby Parzyste Od 0 Do 100 Javascript

Jak wiemy parzystość danej liczby sprawdzamy na podstawie jej podzielności przez 2. Natomiast nasza prezentacja przeznaczona jest dla dzieci przedszkolnych, dlatego ważne jest, aby w pierwszej kolejności zauważyły cały proces poprzez układanie czerwonych żetonów po dwa, "w pary".
In IntelliJ system printed numbers from 1 to 100. I confused why below condition is not pass. Any idea? "Program powinien wyświetlać liczby parzyste od 1 do 100 włącznie. Każdą wartość wyświetl w nowej linii." "The program should display even numbers from 1 to 100 inclusive. Display each value in a new line."package /* Liczby parzyste */ public class Solution { public static void main(String[] args) throws Exception { //tutaj wpisz swój kod for (int i = 1; i <= 100 ; i++) { } } } This website uses cookies to provide you with personalized service. By using this website, you agree to our use of cookies. If you require more details, please read our Terms and Policy.
Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023! Przy zakupie możecie skorzystać z kodu: pasja-akademia w koszyku, uzyskując rabat aż -30% na bilety w wersji "Standard"!
Tak jak mówiliśmy w poprzednich rozdziałach, każda linia kodu jest instrukcją. Te zaś wykonują się kolejno od góry do zostanie wypisane najpierw"); to potem"); // Wypisze: // To zostanie wypisane najpierw // a to potemKolejność wykonywania instrukcji nazywamy przepływem sterowania. Jest to istotne, ponieważ pewne instrukcje zmieniają ten przepływ. Jedną z nich już poznaliśmy — instrukcja if pozwala nam ominąć część kodu, gdy warunek nie jest spełniony. Do tej pory jednak nie byliśmy w stanie sprawić, by pojedyncze polecenie wykonało się więcej niż raz. Tę barierę przełamiemy dopiero teraz, a posłużą nam do tego właśnie whileDefinicja pętli while niewiele różni się od warunku if. Zmienia się tylko słowo kluczowe if na while. Zachowanie również jest do pewnego stopnia warunek nie jest spełniony (zwraca false), to ciało jest pomijane (podobnie jak w przypadku instrukcji warunkowej if).while (false) { tekst nigdy się nie wypisze"); } if (false) { tekst nigdy się nie wypisze"); } // Nic się nie wypiszeJeśli jednak warunek jest spełniony (zwraca true), to ciało zostanie wywołane. Tutaj while różni się od if tym, że warunek sprawdzamy ponownie, po czym, jeśli wciąż jest spełniony, to wywołujemy ciało raz jeszcze. Proces ten powtarzamy tak długo, aż warunek nie będzie poniższym przypadku pierwszy warunek będzie spełniony tylko raz, bo w ciele zmieniamy wartość zmiennej toBePrinted na false. Drugi będzie spełniony trzykrotnie, bo w ciele zwiększamy wartość zmiennej, aż w końcu jej wartość będzie większa od toBePrinted = true; while (toBePrinted) { wypisane tylko raz"); toBePrinted = false; } // Wypisze: // Będzie wypisane tylko raz let printedTimes = 0; while (printedTimes = 2) { dla " + n); n--; } // Wypisze: // Wypisane dla 4 // Wypisane dla 3 // Wypisane dla 2Zarówno operator inkrementacji ++ jak i dekrementacji -- możemy umieścić przed zmienną (++variable, --variable), jak i po zmiennej (variable++, variable--). Różnica między nimi wybiega poza zakres tej książki, ale zainteresowanym polecam poczytać o postinkrementacji i preinkrementacji (oraz postdekrementacji i predekrementacji).Pętla forPętle często wykorzystuje się, aby wykonać jakąś operację dla kolejnych liczb. Przy użyciu pętli while kolejne cyfry od 0 do 4 mogą być wyświetlone w następujący sposób:let i = 0; while (i = lastValue; i--) { // code } // Przykład for (let i = 3; i >= 0; i--) { } // Wypisze: // 3 // 2 // 1 // 0Zauważ, że wszystkie te modyfikacje mogą się łączyć na różne sposoby. Dla przykładu możemy zacząć od 10, zmniejszać o 2 w każdym kroku aż do 4, a na koniec pominąć ostatnią (let i = 10; i > 4; i = i - 2) { } // Wypisze: // 10 // 8 // 6Pętle w JavaScript wspierają także instrukcje break (powoduje natychmiastowe wyjście z pętli) oraz continue (ominięcie reszty ciała). Początkowo, naśladując większość książek, opisałem je, ale zdecydowałem się usunąć tę sekcję. Zrobiłem tak, ponieważ sam nie użyłem oraz nie widziałem ich w żadnym produkcyjnym kodzie co najmniej od roku. Aby mieć pewność, przeszukałem kilka dużych projektów JavaScript w firmie słynącej z dobrego kodu i również nie natknąłem się na ani jeden przykład ich zastosowania. Ponieważ celem tej książki jest skoncentrowanie się na aspekcie praktycznym, a nie samej teorii, usunąłem więc tą Przypadki użycia pętli for dla liczbZ wykorzystaniem pętli for:Wypisz liczby od 10 do liczby od 5 do 30, z pominięciem co drugą liczbę od 20 do że pętle same w sobie nie są współcześnie tak często używane, to jednak są bardzo istotną częścią programowania i ich rozumienie leży u podstaw myślenia programistycznego. To był bardzo ważny rozdział. Poznanie i zrozumienie pętli będzie przejdziemy do funkcjonalności, która zdominowała współczesne projekty programistyczne, a przez wielu ekspertów określana jest jako najistotniejsza funkcjonalność języków programowania. Czas pomówić o funkcjach. Jeśli a nie jest parzyste, to najmniejszą liczbą parzystą będzie a + 1. Parzystość a sprawdzimy badając resztę z dzielenia a przez 2. Jeśli reszta jest zerowa, to a jest liczbą parzystą. Jeśli a nie jest liczbą parzystą, to. Reszta wynosi 1 dla a > 0. Reszta wynosi -1 dla a < 0. Z powyższego wnioskujemy, iż pierwszą liczbę SPIS TREŚCI Szkoła podstawowa Przykłady i zadania – str. 1Rozwiązania zadań – str. 2Pytania sprawdzające – str. 3 Liceum i technikum Przykłady i zadania – str. 4Rozwiązania zadań – str. 5Pytania sprawdzające – str. 6 POZIOM 1 – SZKOŁA PODSTAWOWA WSTĘP Pętle for, while i do while wykonują się tylko wtedy gdy warunek jest prawdziwy. Należy tutaj dodać, że w pętli do while instrukcje wykonują się przynajmniej jeden raz ponieważ warunek jest sprawdzany na końcu. PRZYKŁADY Pętla FOR – przykład 1Napisz program wyświetlający liczby całkowite z przedziału #include using namespace std; int main() { for(int i=1;i w porządku malejącym. #include using namespace std; int main() { for(int i=100;i>=50;i--) cout #include using namespace std; int main() { for(int i=5;i (wartość y podaje użytkownik) #include using namespace std; int main() { int y; cout > y; for(int i=0;i (wartości x i y podaje użytkownik) #include using namespace std; int main() { int x,y; cout > x; cout > y; for(int i=x;i #include using namespace std; int main() { int i=1; while(i w porządku malejącym. #include using namespace std; int main() { int i=100; while(i>=50) { cout #include using namespace std; int main() { int i=5; while(i (wartość y podaje użytkownik) #include using namespace std; int main() { int i=1,y; cout > y; while(i (wartości x i y podaje użytkownik) #include using namespace std; int main() { int x,y; cout > x; cout > y; while(x #include using namespace std; int main() { int i=1; do { cout (wartości x i y podaje użytkownik) #include using namespace std; int main() { int x,y; cout > x; cout > y; do { cout using namespace std; int main() { for(int i=1;i using namespace std; int main() { for(int i=1;i. Wartości x i y podaje użytkownik. Zadanie 3Napisz program, który wyświetli wszystkie liczby z przedziału od 50 do 100 podzielne przez dowolną liczbę k, która podaje użytkownik. Przekształć program tak aby przedział liczb również podawał użytkownik. Zadanie 4Napisz program wypisujący liczby całkowite parzyste od liczby podanej przez użytkownika aż do 0. Zadanie 5Napisz program wyświetlający n kolejnych potęg liczby 2. Wartość n podaje użytkownik, musi to być liczba naturalna większa od 0. Zadanie 6Napisz program sumujący wartości ciągu n liczb podawanych przez użytkownika. Ilość liczb podaje użytkownik jako pierwszą 7Program losuje liczbę z zakresu od 1 do 100. Zadaniem gracza jest odgadnięcie tej liczby. Jeżeli użytkownik poda za dużą liczbę program wyświetli komunikat „Szukana wartość jest mniejsza”. Jeżeli wprowadzi za małą liczbę program wyświetli „Szukana wartość jest większa”. Po odgadnięciu liczby gracz dowiaduje się po ilu próbach udało mu się zakończyć przebieg rozgrywki Podaj liczbę: 75Szukana wartość jest większaPodaj liczbę: 88Szukana wartość jest mniejszaPodaj liczbę: 80Szukana wartość jest większaPodaj liczbę: 85Szukana wartość jest mniejszaPodaj liczbę: 83 GRATULACJE!!! WYGRALES!!!Liczba prób wynosi 5 10000+ rezultata za „liczby parzyste i nieparzyste do 30” Liczby parzyste i nieparzyste Vrsta grupe. autor Kasian42
Liczby pierwsze | Liczby złożone | Najszybsza metoda znajdowania liczb pierwszych od 1 do 100. Jak w Javascript mógłbym znaleźć liczby pierwsze z przedziału od 0 do 100? Myślałem o tym i nie wiem, jak je znaleźć. myślałem o zrobieniu x% x, ale znalazłem z tym oczywisty problem. to, co mam do tej pory: ale niestety jest to najgorszy kod wszechczasów. var prime = function (){ var num; for (num = 0; num znajdź lepszą (i wygraj nagrodę za odkrycie nowej pierwszej :)) 2 wydaje się działać nawet, gdy n = 10 000 000, nie jestem pewien, co to jest „małe” haha 1 @devonJS, gdy n = 10 000 000, zatrzymałoby się przy pierwszej iteracji, ponieważ jest podzielne przez 2, bardzo szybko byłoby dowiedzieć się, że 10 000 000 nie jest liczbą pierwszą. Mimo to może znaleźć 2 147 483 647 dość szybko i 67 280 421 310 721 bez większych problemów, chociaż wydaje się, że nie radzi sobie w Chrome z 170 141 183460 469 231731 687 303715884 105 727 po prostu dlatego, że% 2 na tej liczbie będzie równe 0. Oto pokaz na żywo tego skryptu: Najpierw utwórz funkcję, która sprawdzi, czy pojedyncza liczba jest liczbą pierwszą, czy nie. Jeśli chcesz rozszerzyć obiekt Number, możesz, ale zdecydowałem, że kod będzie tak prosty, jak to tylko możliwe. function isPrime(num) { if(num =j && i%j == 0) { ++counter; } } if(counter == 1) { primeNumbers = primeNumbers + i + ' '; } } ... Ta odpowiedź zadziałała dla mnie i jest o wiele prostsza niż inne odpowiedzi, które widziałem. Nie jestem pewien, jak możemy się różnić j i ja, ponieważ oboje obracają się w tym samym czasie. Czy mógłbyś to wyjaśnić, dziękuję? Odpowiedź Luchiana daje link do standardowej techniki znajdowania liczb pierwszych. Mniej wydajnym, ale prostszym podejściem jest przekształcenie istniejącego kodu w zagnieżdżoną pętlę. Zauważ, że dzielisz przez 2, 3, 4, 5, 6 i tak dalej ... i zamień to w pętlę. Biorąc pod uwagę, że jest to praca domowa i biorąc pod uwagę, że celem zadania domowego jest pomoc w nauce podstawowego programowania, rozwiązanie, które jest proste, poprawne, ale nieco nieefektywne, powinno wystarczyć. Używając rekurencji w połączeniu z regułą pierwiastka kwadratowego stąd, sprawdza, czy liczba jest liczbą pierwszą, czy nie: function isPrime(num){ // An integer is prime if it is not divisible by any prime less than or equal to its square root var squareRoot = parseInt( var primeCountUp = function(divisor){ if(divisor > squareRoot) { // got to a point where the divisor is greater than // the square root, therefore it is prime return true; } else if(num % divisor === 0) { // found a result that divides evenly, NOT prime return false; } else { // keep counting return primeCountUp(++divisor); } }; // start @ 2 because everything is divisible by 1 return primeCountUp(2); } Oto najszybszy sposób obliczania liczb pierwszych w JavaScript na podstawie poprzedniej wartości pierwszej. function nextPrime(value) { if (value > 2) { var i, q; do { i = 3; value += 2; q = while (i 2) { var i, q; do { i = 3; value += 2; q = while (i var n=prompt('Enter User Value') var x=1; if(n==0 || n==1) x=0; for(i=2;i Sito Eratostenesa. trochę wygląda, ale jest proste i działa! function count_prime(arg) { arg = typeof arg !== 'undefined' ? arg : 20; //default value var list = [2] var list2 = [0,1] var real_prime = [] counter = 2 while (counter Array( => n%m); To da 9,25 i więcej liczb niebędących liczbami pierwszymi jako liczby pierwsze, sprawdź Tak, zapomniałem zwiększyć limit wyszukiwania ( (n) +1). Dzięki za test Lista utworzona przy użyciu nowych funkcji ES6, zwłaszcza z generatorem. Przejdź do zrobionego w języku katalońskim na zajęcia z moimi uczniami. Mam nadzieję, że uznasz to za przydatne. function* Primer(max) { const infinite = !max && max !== 0; const re = /^.?$|^(..+?)\1+$/; let current = 1; while (infinite || max-- ) { if(! == true) yield current; current++ }; }; let [...list] = Primer(100); Oto bardzo prosty sposób obliczania liczb pierwszych między podanym zakresem (od 1 do ograniczenia). Proste rozwiązanie: public static void getAllPrimeNumbers(int limit) { prime number from 1 to ' + limit); for(int number=2; numberi+2); for (var i = 0; i x); // return non 0 values } = `${getPrimes(100).join(', ')}`; // for fun, this fantasist regexp way (very inefficient): // (_,i)=>i).filter(n => n>1&&!/^(oo+)\1+$/.test('o'.repeat(n)) Niedawno wymyśliłem jednoliniowe rozwiązanie, które zapewnia dokładnie to dla wyzwania JS na Scrimba (poniżej). ES6 + const getPrimes=num=>Array(num-1).fill().map((e,i)=>2+i).filter((e,i,a)=> function getPrimes(num){return ','.repeat(num).slice(0,-1).split(',').map(function(e,i){return i+1}).filter(function(e){return e>1}).filter(function(x){return ','.repeat(x).slice(0,-1).split(',').map(function(f,j){return j}).filter(function(e){return e>1}).every(function(e){return x%e!==0})})}; Oto wyjaśniona logika: Najpierw funkcja buduje tablicę wszystkich liczb prowadzących do żądanej liczby (w tym przypadku 100) za pośrednictwem .repeat() funkcji, używając żądanej liczby (100) jako argumentu repeatera, a następnie mapując tablicę na indeksy + 1, aby uzyskać zakres liczb od 0 do tej liczby (0-100). Trochę rozszczepiania strun i łączenia magii, która tu się dzieje. Z przyjemnością wyjaśnię ten krok dalej, jeśli chcesz. Wykluczamy 0 i 1 z tablicy, ponieważ nie powinny być testowane pod kątem liczby pierwszej, aby nie dawały fałszywie dodatniego wyniku. Żadne nie są pierwsze. Robimy to za pomocą .filter() tylko dla liczb> 1 (≥ 2). Teraz filtrujemy naszą nową tablicę wszystkich liczb całkowitych od 2 do żądanej liczby (100) tylko pod kątem liczb pierwszych. Aby odfiltrować tylko liczby pierwsze, używamy tej samej magii od naszego pierwszego kroku. Używamy .filter() i .repeat() jeszcze raz, aby utworzyć nową tablicę od 2 do każdy wartość z naszej nowej tablicy liczb. Dla nowej tablicy każdej wartości sprawdzamy, czy którakolwiek z liczb ≥ 2 i .every() metoda sparowana z operatorem modulo % aby sprawdzić, czy ta liczba ma resztę po podzieleniu przez którąkolwiek z tych wartości między 2 a sobą. Jeśli każda wartość ma resztę (x%e!==0), warunek jest spełniony dla wszystkich wartości od 2 do tej liczby (ale nie wliczając tej liczby, tj .: [2,99]) i możemy powiedzieć, że liczba jest pierwsza. Funkcje filtrujące zwracają wszystkie liczby pierwsze do najwyższego wyniku, zwracając w ten sposób listę wartości pierwszych między 2 a wartością przekazaną. Na przykład, używając jednej z tych funkcji, które dodałem powyżej, zwraca: getPrimes(100); // => [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97] 1 Cholera! Dokładnie takiego podejścia szukałem. Dzięki za udostępnienie. 1 @ultrageek pewnie! Ponadto zoptymalizowałem moje rozwiązanie ES6 +, aby korzystać z fill() funkcja, a nie moje nieco zepsute rozwiązanie z powtarzającymi się przecinkami. Zaktualizowano! Najpierw zmień swój kod wewnętrzny na inną pętlę (for i while), dzięki czemu można powtórzyć ten sam kod dla różnych wartości. Bardziej szczegółowo dla twojego problemu, jeśli chcesz wiedzieć, czy dany n jest liczbą pierwszą, musisz ją podzielić dla wszystkich wartości od 2 do sqrt (n). Jeśli którykolwiek z modułów ma wartość 0, nie jest liczbą pierwszą. Jeśli chcesz znaleźć wszystkie liczby pierwsze, możesz to przyspieszyć i sprawdzić n tylko przez podzielenie przez poprzednio znalezione liczby pierwsze. Innym sposobem na przyspieszenie tego procesu jest fakt, że oprócz 2 i 3 wszystkie liczby pierwsze są 6*k plus lub mniej 1. W rzeczywistości jest między 2 a sqrt (n). Tak masz rację. Jeśli liczba większa niż sqrt (n) jest dzielnikiem noznacza to, że iloraz jest mniejszy niż sqrt (n), więc zostałby już znaleziony. Korygowanie. Byłoby dobrze, gdybyś użył któregokolwiek z algorytmów gazillionów, które zostaną ci przedstawione w tym wątku, aby nauczyć się zapamiętywać niektóre z nich. Zobacz pytanie do wywiadu: Jaki jest najszybszy sposób na rekurencyjne generowanie liczb pierwszych? Użyj następującej funkcji, aby znaleźć liczby pierwsze: function primeNumbers() { var p var n = var d var x var prime var displayAll = 2 + ' ' for (p = 3; p divisor) { if ( 2) > n) { return true; } if (n % divisor == 0 || > n) { return false; } else { divisor++; } } return true; } function getPrimeNumbers(range) { for (var i = 3; i <= range; i+=2) { if (isPrime(i)) { } } fillContent(primeNumbers); } getPrimeNumbers(11); })(); }; 1 2 Dalej

Study with Quizlet and memorize flashcards containing terms like 0, 1, 2 and more. Liczby od 0 do 100. Flashcards. Learn. Test. Match. 0. Click the card to flip

Liczba wyników dla zapytania 'liczby parzyste i nieparzyste do 100': 10000+ LICZBY PARZYSTE I NIEPARZYSTE Sortowanie według grupwg Mpolak Liczby parzyste i nieparzyste Sortowanie według grupwg Dariaba81 Liczby parzyste i liczby nieparzyste Przebij balonwg Martyna123 Klasa 2 Matematyka Liczby parzyste i nieparzyste Sortowanie według grupwg Kasian42 Zerówka Klasa 1 Klasa 2 Matematyka Zbrajanje i oduzimanje do 100 Koło fortunywg Bertovicines 2. razred Matematika Brojevi do 100 oduzimanje Zbrajanje Počítame bez prechodu + do 100 Znajdź paręwg Jankalenkova Počítame do 100 dodawanie i odejmowanie do 100 Brakujące słowowg Nauczycielzpasja Klasa 2 Klasa 3 Matematyka dodawanie i odejmowanie do 100 działania z okienkami Nowa Era Zbrajajanje i oduzimanje do 100-MOZGALICE Teleturniejwg Osnovnaskolazagreb 2. razred Matematika Zbrajanje i oduzimanje do 100 LICZBY PARZYSTE I NIEPARZYSTE Labiryntwg Asokolowska Klasa 1 Matematyka VRG Połącz w parywg Polina30 100 Англійська мова Upper Połącz w parywg Polina30 100 іноземні мови High-frequency collocations (Upper) Sortowanie według grupwg Polina30 100 Англійська мова Liczby parzyste i nieparzyste Przebij balonwg Magdamasik Zerówka Klasa 1 Klasa 2 Klasa 3 Matematyka Atrem 31/01 Połącz w parywg Polina30 100 Вища освіта Англійська мова Liczby parzyste i nieparzyste Sortowanie według grupwg Jolakrol Klasa 1 Matematyka Liczby parzyste i liczby nieparzyste Przebij balonwg Monia215 Liczby parzyste i liczby nieparzyste Przebij balonwg Beatadunowska68 Liczby parzyste i nieparzyste Sortowanie według grupwg Evape Klasa 1 Matematyka Liczby parzyste i nieparzyste Testwg Lilamacher163 Klasa 1 Klasa 2 Klasa 3 Matematyka Liczby parzyste i nieparzyste Przebij balonwg Jrogala78 Klasa 2 Matematyka Liczby parzyste i nieparzyste Sortowanie według grupwg Milena29 Liczby parzyste i nieparzyste Sortowanie według grupwg Annafido85 Klasa 4 Matematyka + - do 100 s přechodem Koło fortunywg Terezjadrna 2. třída matematika sčítání a odčítání do 100 i s přechodem Dodawanie do 100 Teleturniejwg Jacfil Klasa 1 Klasa 2 Klasa 3 Matematyka Dodawanie do 100 Ponavljanje za ispit znanja: Zbrajanje i oduzimanje do 100; Kune i lipe Odkryj kartywg Kamoani50 2. razred Matematika Kune i lipe Zbrajanje i oduzimanje do 100 Počítame do 100 Odkryj kartywg Metrix Matematika Počítanie do 100 +, - do 100 s přechodem - rozklad čísel Połącz w parywg Ludmila101 Rozklad čísel - sčítání a odčítání do 100 Počítame bez prechodu - do 100 Znajdź paręwg Jankalenkova Počítame do 100 What should I do? Losowe kartywg Corp Liczby do 100 ang Przebij balonwg Zspstrzaljo Klasa 3 Angielski Bugs Team 3 Skracanie i rozszerzanie ułamków. Liczby mieszane. Koło fortunywg Njola13 Klasa 4 Klasa 5 Matematyka Skracanie i rozszerzanie ułamków. Liczby mieszane. Odčítání do 100 s přechodem (typ 60-28) Sortowanie według grupwg Roniiik Základní škola matematika Počítání do 100 so do i Losowe kartywg Taispatronus So do I. Neither do I. I don't. I prefer... Koło fortunywg Solnechnaya0603 Pan Jędrzej przygotował oscypki do sprzedaży Testwg Nauczycielzpasja Klasa 2 Matematyka dodawanie do 100 Nowa Era So do I neither do I Koło fortunywg Alexteacher So do I or Neither do I Testwg Yuliageiko What do I do? Rysunek z opisamiwg Mariiahabinet What do I do? Losowe kartywg Pippin I spy numbers 10-100 Rysunek z opisamiwg Annaavetiuk Do I / Am I Losowe kartywg Katron4uk What should I do? Odkryj kartywg Corp So do I/ Neither do I Testwg Annaavetiuk So do I / Neither do I Losowe kartywg Voronova2 Sčítanie a odčítanie do 100 Znajdź paręwg Jankalenkova 7 - 8 MAT Počítame do 100 Sčitovanie do 100 s prechodom Połącz w parywg Jankalenkova 7 - 8 MAT Počítame do 100 Odčitovanie do 100 s prechodom Połącz w parywg Jankalenkova 7 - 8 MAT Počítame do 100 game Porządkowaniewg Anastasiamegei I like/I dont like Personality Adjectives Next Move 2 unit 5 Połącz w parywg Wondersolitaire 14-100 Sčítání, odčítání do 100 s přechodem Koło fortunywg Mirka31 2. ročník ZŠ matematika Sčítání a odčítání do 100 s přechodem What should I do? Losowe kartywg Taniaurupa Making plans phrases Połącz w parywg Jujuwind 14-100 10 клас 11 класу 12 класу Vocabulary Англійська мова іноземні мови So do I. / Neither do I. Testwg Victoria7shunia So do I/ Neither do I - №2 Testwg Ybogdana14 So do I / Neither do I Losowe kartywg Olgalcenco Wykroczenie-przestępstwo-zbrodnia Sortowanie według grupwg Cherniavska 15-100 activities: what do i do? Znajdź paręwg Besarabirina29 Додавання і віднімання в межах 100 Znajdź paręwg Natalimitr1983 2 клас Математика в межах 100 So do I. Neither do I. I don't. I prefer... Koło fortunywg Missanastasiia So do I neither do I Koło fortunywg Panialena2008 number-grid http://tinyurl.com/o42bo54Poćwicz podobne zadania - http://tinyurl.com/p4eyuxwFilm na licencji CC: NC-BY-SA zrealizowany przez Fundację Edukacja
marexbdm Liczby parzyste: 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98, nieparzyste: 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97, trójkąt nie może istnieć!Ale gdy dodamy wyszło by 60cm. 1 votes Thanks 1
Program wyswietlajace liczby parzyste i nie parzyste 2011-11-23 16:08; Jak napisać funkcję losującą liczbę z przedziału? 2018-01-14 10:52; parzyste liczby 2002-05-15 15:17; Parzyste czy nieparzyste 2022-02-13 00:40; Liczby parzyste (while) 2012-12-21 22:58; Liczby parzyste i nieparzyste 2013-03-12 15:17; liczby parzyste w pliku 2013-04-30 Tablice Wyobraź sobie, że musisz przechować 10 różnych wartości. Tworzysz więc 10 zmiennych. I wszystko jest w porządku do czasu, gdy dostajesz zadanie, by każdą taką zmienną zwiększyć np. o 2. Zaczynają się schody. A schody te zwiększają się gdy dochodzisz do momentu kiedy nie możesz z góry określić ile masz tych zmiennych, lub gdy tych zmiennych robi się nie 10, a na przykład 2000 razy tyle. Tutaj przychodzą z pomocą tablice, które są uporządkowanymi zbiorami zawierającymi jakieś dane. Dość klasycznym porównaniem jest szafa z bibliotecznymi kartami książek. Półka - tablica - przechowuje karty książek - u nas zmienne. Tworzenie nowej tablicy Aby stworzyć nową tablicę korzystamy z kwadratowych nawiasów: const tab = []; //pusta tablica const tab2 = [1, 2, 3, 4]; const tab3 = ["Marcin", "Ania", "Agnieszka"]; const a = "ALA"; const b = 234; const c = "PIES"; const tab = [a, b, c, "KOT", {...}]; //tablica z 5 elementami. Mogą to być oddzielne zmienne, ale też wartości wpisane bezpośrednio w tablicy Drugim sposobem tworzenia tablic - o wiele rzadziej używanym jest użycie konstruktora: const tab = new Array(10); //[blank x 10] const tab = new Array("Ala", "Bala", "Cala"); //gdy podamy więcej wartości staną się one elementami tablicy //["Ala", "Bala", "Cala"] Kolejne elementy tablicy ponumerowane za pomocą tak zwanych indeksów, które numerowane są od 0 (więcej na ten temat dowiesz się w rozdziale o obiektach). Pierwsza wartość w tablicy ma indeks 0, druga 1, trzecia 2 i tak dalej, aż do ostatniego indeksu który wynosi długość tablicy - 1 czyli Po stworzeniu tablicy aby pobrać dane elementy z tablicy wystarczy się do nich odwołać przez nazwę tablicy i indeks, który podajemy w kwadratowych nawiasach: const tab = ["Ala", "ma", "rudego", "kota"]; tab[0] ); //Ala tab[1] ); //ma tab[2] ); //rudego tab[3] ); //kota tab[ ); //ostatni element - kota W najnowszej wersji Javascript (ES2022) do odwoływania się do elementów możemy też użyć funkcji at(index). Jako index możemy tutaj podać liczbę dodatnią, ale też ujemną, dzięki czemu pobierzemy element od końca tablicy: const tab = ["Ala", "ma", "rudego", "kota"]; //Ala //ma //rudego //kota //rudego Właściwość length Każda tablica udostępnia nam właściwość length, która określa jej długość (czyli ilość jej elementów). Dzięki temu możemy poznać nie tylko długość tablicy, ale też indeks ostatniego elementu oraz w łatwy sposób przeprowadzać pętlę po wszystkich elementach naszej tablicy. //indeks: 0 1 2 const tab = ["Marcin", "Ania", "Agnieszka"]; ); //3 tab[ ] ); //Agnieszka for (let i=0; i ")); //Marcin Ania Agnieszka //zliczam liczbę liter w tablicy const cars = ["Mercedes", "Audi", "BMW"]; //15 Zamiana tekstu na tablicę Skoro powyżej zamieniliśmy tablicę na tekst, to spróbujmy zrobić to w drugą stronę. Aby to zrobić, wystarczy użyć składni spread: const txt = "kartofel"; const tab = [...txt]; //["k", "a", "r", "t", "o", "f", "e", "l"] Jeżeli chcielibyśmy tekst podzielić na podstawie znaku podziału, użyjemy do tego funkcji split() dostępnej dla tekstów: const txt = "Ala ma kota"; const tab = "); //["Ala", "ma", "kota"]; Funkcja reverse() Funkcja reverse() służy do odwracania kolejności tablicy: const tab = [1, 2, 3, 4]; //[4, 3, 2, 1] const word = "kajak"; const tab = [...word]; === //true czyli palindrom Metody indexOf(), lastIndexOf() i includes() Wyszukać element w tablicy możemy na kilka sposobów. Pierwszy z nich polega na skorzystaniu z funkcji indexOf(str) (która też jest dostępna dla stringów). Funkcja zwraca indeks na którym znalazła szukany tekst/obiekt, lub -1, jeżeli danego elementu nie znalazła: const tab = ["Marcin", "Ania", "Agnieszka", "Monika"]; //2 //-1 if ( !== -1) { występuje w tablicy pod indexem", } Kolejna metoda to lastIndexOf(), która działa bardzo podobnie, ale zwraca ostatnią pozycję szukanego tekstu: const tab = ["Agnieszka", "Marcin", "Ania", "Agnieszka", "Monika"]; //3; Kolejna funkcja to includes(), która zwraca prawdę lub fałsz w zależności czy szukana wartość znajduje się w tablicy: const tab = ["Marcin", "Ania", "Agnieszka", "Monika"]; if ( { występuje w tablicy pod indeksem", } if (! { nie występuje w tej tablicy"); } Wszystkich trzech metod możemy użyć także do wyszukiwania obiektów w tablicy, co staje się przydatne, gdy chcemy znaleźć index np. klikniętego przycisku w stronicowaniu. const ob = { name : "Jan" } const things = ["ala", "bala", "cala", ob, "data"]; //3 //bardziej realny przykład const paginationButtons = [... => { e => { const index = showSlide(index); }); }); Funkcja sort() Funkcja sort(fn*) służy do sortowania tablic. const tab = ["Marcin", "Ania", "Piotrek", "Grześ"]; tab ); //["Ania", "Grześ", "Marcin", "Piotrek"] Standardowo JavaScript segreguje tablice leksykograficznie (słownikowo). Oznacza to, że liczby traktowane są jak słowa. W większości przypadków powoduje to nieoczekiwane rezultaty: const tab = [1, 2, 21, 32, //[ 1, 2, 21, 32 ] Ale nie tylko przy liczbach funkcja ta nie zadziała. Spójrz na poniższy przykład: const tab = ["Bartek", "ania", "Celina", "agnieszka"]; //["Bartek", "Celina", "agnieszka", "ania"] Powyższy "błąd" wynika z faktu, że duże litery występują przed małymi. Aby móc posegregować naszą tablicę według własnych kryteriów (przy okazji naprawiając powyższe niedoskonałości), musimy do funkcji sort przekazać własną opcjonalną funkcję. function mySort(a, b) { ... } Javascript wykorzysta ją do porównywania kolejnych elementów w tablicy. Sama funkcja powinna zwracać odpowiednie wartości: Jeżeli funkcja zwróci wartość mniejszą od 0, to element a zostanie ustawiony przed elementem b Jeżeli funkcja zwróci wartość większą od 0, to element a zostanie ustawiony za elementem b Jeżeli funkcja zwróci wartość równą 0, to wartość oba elementy nie zostaną przestawione function compare(a, b) { if (a b) { return 1 } return 0 } Powyższe działanie obrazuje poniższy film: Przy czym puryści Javascript mogli by się przyczepić, że przecież zastosowany w Javascript algorytm sortujący jest bardziej skomplikowany. Przykładowo aby posegregować wartości liczbowe musimy utworzyć funkcję: function compareNr(a, b) { return a - b } const tab = [100, 320, 10, 25, 310, 1200, 400]; const tab3 = tab3 ); //[10, 25, 100, 310, 320, 400, 1200] const tab = [ { name: "Marcin" , height : 183 }, { name: "Ania" , height : 173 }, { name: "Agnieszka" , height : 170 }, ] //dla sort spokojnie możemy używać funkcji anonimowej b) { return - }); W powyższych przykładach sortowaliśmy po liczbach. Jeżeli podczas takiego sortowania chcielibyśmy porównać 2 teksty, odejmowanie tutaj nie zadziała prawidłowo (bo znowu wkradnie się porównywanie leksykalne). O wiele lepszym rozwiązaniem będzie użycie metody localeCompare(): const tab = ["Marcin", "ania", "Bożena"]; //ania specjalnie z małej b) { return a - b; }) //['Marcin', 'ania', 'Bożena'] b) { return b); }) //['ania', 'Bożena', 'Marcin'] Dzięki temu, że możemy przekazać własną funkcję, sortować możemy każdy rodzaj tablicy: const mails = [ "marcin@ "marcin@ "marcin@ "marcin@ ] //sortuje po domenach //z użyciem funkcji strzałkowej b) { const aDomain = @") + 1); const bDomain = @") + 1); return }) const users = [ { name : "Marcin", car : { name : "Toyota", age : 10 } }, { name : "Marcin", car : { name : "Fiat", age : 15 } }, { name : "Monika", car : { name : "BMW", age : 5 } }, ] //sortuje po wieku samochodu b) { return - }); Łączenie tablic Do połączenia (scalenia) tablic nie możemy użyć zwykłego dodawania (tak samo nie możemy odejmować tablicy od tablicy): const tab1 = ["Ala", "Basia"]; const tab2 = ["Piotr", "Marcin"]; + tab2); //Ala,BasiaPiotr,Marcin Wynikiem jest wartość typu string, co raczej nie jest prawidłowym rezultatem. Aby połączyć ze sobą kilka tablic wykorzystamy funkcje concat(), która jako parametr przyjmuje jedną lub kilka tablic: const anim1 = ["Pies", "Kot"]; const anim2 = ["Słoń", "Wieloryb"]; const anim3 = ["Chomik ninja", "Świnka morderca"]; const table = //wypisze ["Pies", "Kot", "Słoń", "Wieloryb"] const tableBig = anim3); //wypisze ["Pies", "Kot", "Słoń", "Wieloryb", "Chomik ninja", "Świnka morderca"]; W dzisiejszych czasach o wiele przyjemniejszym sposobem jest użycie spread syntax: const anim1 = ["Pies", "Kot"]; const anim2 = ["Słoń", "Wieloryb"]; const table = [...anim1, ...anim2]; Funkcja slice() Funkcja slice(od, do*) tak samo jak przy stringach, zwraca kawałek tablicy na której została wywołana. Pierwszy parametr wskazuje na indeks, od którego ma "wyciąć" elementy, a drugi wskazuje indeks do jakiego będziemy ciąć. Jeżeli nie podamy drugiej wartości, zostanie wycięty kawałek od danego indeksu do końca tablicy. const tab = ["Marcin", "Ania", "Agnieszka", "Monika", "Magda"]; const tab2 = 1); //["Marcin"] //["Marcin", "Ania", "Agnieszka", "Monika", "Magda"] const tab3 = //["Agnieszka", "Monika", "Magda"] const tab4 = 5); //["Marcin", "Ania", "Agnieszka", "Monika", "Magda"] const tab5 = //od końca //["Monika", "Magda"] const tab6 = -1); //["Agnieszka", "Monika"] Funkcja splice() Funkcja splice(index, ileUsunąć, nowyElement*...) służy zarówno do usuwania jak i wstawiania nowych elementów do tablicy. Parametr index określa miejsce w tablicy gdzie będziemy działać. Parametr ileUsunąć mówi ile elementów powinno być usuniętych z tablicy. Opcjonalne parametry nowyElement to element (lub kilka), który będzie wstawiany przed danym miejscem tablicy. const tab = ["Marcin", "Ania", "Agnieszka", "Monika"]; 1); //usuwam 1 element na indeksie 2 //["Marcin", "Ania", "Monika"] const tab = ["Marcin", "Ania", "Agnieszka", "Monika"]; 0, "A") //nic nie usuwam na indeksie 1 i wstawiam przed niego nowy element //["Marcin", "A", "Ania", "Agnieszka", "Monika"] const tab = ["pies", "kot", "chomik", "aligator", "świnka", "kanarek"]; const index = if (index !== -1) { 1); //["pies", "kot", "chomik", "świnka", "kanarek"]; } Funkcja fill() Funkcja fill() służy do wypełniania tablicy. Pierwszy jej parametr to wartość, którą zostanie wypełniona tablica. Dwa pozostałe opcjonalne parametry wskazują na indeks początku i końca wypełniania. Jeżeli nie podamy indeksu końcowego, tablica zostanie wypełniona od indeksu początkowego do swojego końca. const tab = new Array(20); //[empty x 20] //["kot", "kot", "kot", ...] const tab2 = []; = 15; //[empty x 15] 2, 5); //[empty × 2, "kot", "kot", "kot", empty × 10] const tab3 = [1, 2, 3, 4, 5]; 2); //[1, 2, "pies", "pies", "pies"] Przemieszczanie się po tablicy Jedną z najwspanialszych rzeczy, jakie dają nam tablice to możliwość wykonywania masowych operacji na wszystkich elementach w tablicy. Aby zrobić pętlę po tablicy możemy skorzystać z kilku zapisów. Jednym z nich jest użycie klasycznych pętli for/while: const tab = ["Marcin", "Ania", "Agnieszka"]; for (let i=0; i< i++) { pętli: " + i); //0, 1... //"Marcin", "Ania"... } Widzisz jak się odwołuję do danego elementu tablicy? Skoro licznik i zwiększa się od 0 do to mogę za jego pomocą pobierać kolejne elementy tablicy czyli tab[0], tab[1]... i tak do tab[ const tab = ["Marcin", "Ania", "Agnieszka"]; for (let i=0; i< i++) { const el = tab[i]; //"MARCIN", "ANIA"... } Oczywiście pętlę while też możemy zastosować, przy czym wykorzystanie jej dla iterowania po tablicy jest mało spotykane. Iterowanie po tablicach to tak częsta rzecz, że w Javascript mamy na to kilka możliwości. W dzisiejszych czasach możemy też zastosować o wiele przyjemniejszą pętlę for of, która automatycznie wyłapie nam odpowiedni element z tablicy (nie musimy odwoływać się poprzez tab[i]): const tab = ["Marcin", "Ania", "Agnieszka"]; for (const el of tab) { //el to nazwa zmiennej wymyślona przez nas //"Marcin", "Ania"... } for (const xxx of tab) { //xxx to nazwa zmiennej wymyślona przez nas //"MARCIN"... } for (let lorem of tab) { //niektórzy używają tutaj let zamiast const } Pętla ta jest na tyle wygodna, że w kolejnych rozdziałach (szczególnie DOM) dość często będę z niej korzystał. Innym sposobem wykonywania zbiorczych operacji na tablicach jest zastosowanie metod iteracyjnych takich jak forEach(). Omówimy je w kolejnym rozdziale. Tablice wielowymiarowe Skoro tablice mogą w sobie trzymać dowolne wartości, mogą także przetrzymywać obiekty, lub... kolejne tablice. Taki twór zwie się tablicami wielowymiarowymi. const tab = [ ["a1", "a2", "a3", "a4", "a5", "a6"], ["b1", "b2", "b3", "b4", "b5", "b6"], ["c1", "c2", "c3", "c4", "c5", "c6"], ] //["a1", "a2", "a3", "a4", "a5", "a6"] //6 //"a2" //"c4" Do czego takie wielowymiarowe tablice mogą się przydać? Przykładowo do przetrzymywania danych: const tab = [ ["Marcin", 183, "red", "kot"], ["Ania", 173, "blue", "pies"], ["Agnieszka", 170, "yellow", "świnka"] ] imię: ${tab[0][0]} wzrost: ${tab[0][1]} kolor: ${tab[0][2]} zwierzak: ${tab[0][3]} `); Powyższy przykład nie jest idealny. Trzymanie w taki sposób danych tego typu to proszenie się o problemy. Po pierwsze musimy pamiętać kolejność indeksów dla każdej danej. Druga sprawa to potencjalna możliwość zmiany kolejności indeksów. Problemy te rozwiązują obiekty, o których sobie jeszcze porozmawiamy. Nie oznacza to jednak, że takie wielowymiarowe tablice nie mają zastosowania. Mają - i to całkiem duże. Wystarczy chociażby spojrzeć praktycznie na dowolną grę. Większość map poziomów w takich grach zbudowana jest na bazie właśnie tablic wielowymiarowych, gdzie każdy indeks wewnętrznych tablic zawiera informację na temat użytej w danym miejscu grafiki czy wystąpienia ściany. Tutaj mała ciekawostka. Wielu artystów nie tworzy takich tablic za pomocą kodu, a raczej korzysta ze specjalnych edytorów, które służą do układania grafiki na planszy. Są to np. lub tiled, ale też wiele z popularnych narzędzi w świecie gamedevu ma swoje wbudowane edytory. Spróbujmy wyświetlić jedną z takich przykładowych tablic na ekranie konsoli debugera: const level = [ [1, 1, 0, 0, 2, 2, 0, 0, 1, 1], [1, 0, 0, 0, 2, 2, 0, 0, 0, 1], [1, 0, 1, 1, 2, 2, 1, 1, 0, 1], [1, 0, 2, 2, 2, 2, 2, 2, 0, 1], [2, 2, 2, 2, 1, 1, 2, 2, 2, 2], [2, 2, 2, 2, 1, 1, 2, 2, 2, 2], [1, 0, 2, 2, 2, 2, 2, 2, 0, 1], [1, 0, 1, 1, 2, 2, 1, 1, 0, 1], [1, 0, 0, 0, 2, 2, 0, 0, 0, 1], [1, 1, 0, 0, 2, 2, 0, 0, 1, 1] ]; let str = ""; for (const subTab of level) { //pod subTab mamy każdą kolejną podtablicę for (const el of subTab) { switch (el) { case 0 : str += "🟩"; break; case 1 : str += "🟫"; break; case 2 : str += "⬛"; break; } } str += "\n"; } W naszym przypadku w tablicy są tylko wartości 0/1/2. W praktyce musiały by się tam znaleźć indeksy każdej grafiki użytej do zrobienia danej planszy, a i przydało by się tutaj dodać kilka funkcji rysujących realną planszę. I tu się pojawia smutek autora. Chciałbym wam teraz pokazać jakiś bardziej realny przykład, ale wymagało by to sięgnięcia po bardziej zaawansowaną wiedzę, którą poznamy w późniejszych rozdziałach. Przyjdzie pora i na to. Funkcja flat() Jeżeli chcemy spłaszczyć wielowymiarową tablicę, zastosujemy funkcję flat(). Jedyny jej parametr służy do określenia ile poziomów mamy spłaszczyć: const tab = [ 1, [2,3], [4,5,[6,7]], [[[8,9], [10,11]]] ] const tab = [ 1, [2,3], [4,5,[6,7]], [[[8,9], [10,11]]] ] Jeżeli chcemy mieć pewność, że uzyskamy płaską 1 wymiarową tablicę, jako liczbę poziomów podajmy Infinity: const tab = [ 1, [2,3], [4,5,[6,7]], [[[8,9], [10,11]]] ] //[1,2,3,4,5,6,7,8,9,10,11] Funkcja map*, this*) służy do tworzenia tablic z obiektów tablico podobnych. Obiekty takie są podobne do tablic, ale równocześnie nimi nie są. Przykładem takiego obiektu są kolekcje elementów pobranych ze strony, argumenty funkcji (arguments), czy np. classList dla elementów na stronie. Będziemy się o nich uczyć w kolejnych rozdziałach. const ob = { 0 : "ala", 1 : "bela", length: 2 } //["ala", "bela"] //pobieram kolekcję buttonów ze strony const buttons = //NodeList [button, button...] const tab = //Array [button, button...] Drugi opcjonalny parametr tej funkcji może zawierać funkcję map() dla tablic: const ob = { 0 : "ala", 1 : "bela", length: 2 } const tab = function(el) { return }); //["ALA", "BELA"] Trzeci - równie opcjonalny parametr wskazuje na this. Działa on podobnie do stosowanego w przypadku metod dla tablic. W praktyce w większości przypadków używany jest tylko pierwszy parametr czyli obiekt, który poddajemy konwersji (tak jak w pierwszym przykładzie). W dzisiejszych czasach w wielu przypadkach zamiast powyższej metody możemy skorzystać ze spread syntax: const buttons = //NodeList [button, button...] const buttonsTabA = [...buttons]; //array const buttonsTabB = //array Różnica między spread syntax a jest taka, że tą drugą możemy zastosować dla obiektów tablico podobnych, które nie mają zaimplementowanej własnej funkcji iterującej: const ob = { 0: "a", 1: "b", length: 2 }; //["a", "b"] //ob[ is not a function Spokojnie. Nie musisz się teraz skupiać na bardzo dokładnym poznaniu każdego aspektu działania tej metody. Wszystko przyjdzie z czasem. String - teksty Funkcje EGZAMIN Z KWALIFIKACJI E.14. Zadanie 33. E.14-X-18.06 , PHP , PHP [3] wylosowane liczby od 1 do 99. kolejne liczby od 1 do 100. wczytane z klawiatury liczby tak długo, aż nie zostanie wczytana wartość 0. losowe liczby od 0 do 100 tak długo, aż nie zostanie wylosowana wartość 0. Cześć, Jestem tu nowy i niestety nie znalazłem żadnych podpowiedzi poprzez wyszukiwarkę. Pytanie moje może okazać się banalne, ale uczę się JS'a dopiero od kilku dni a mam pewne zadanie i kompletnie nie wiem jak się do tego zabrać (poniżej treść zadania). Samo wypisanie liczb nie będzie specjalnie trudne ale jak dołożyć do tego opis "parzysta" "nieparzysta"? Czy ktoś mógłby jakoś nakierować? Bardzo proszę o język zrozumiały dla raczkującego laika. W pliku napisz program, który na podstawie wartości zmiennej np. var n = 5; wypisuje wszystkie liczby od zera do n. Przy każdej liczbie program ma napisać, czy liczba jest parzysta czy nie. Np.: 0 – parzysta 1 – nieparzysta 2 – parzysta 3 – nieparzysta ... Podpowiedź: Jak sprawdzić czy liczba jest parzysta lub nieparzysta? Wystarczy podzielić ją modulo przez 2, jeżeli wynik to 0, wtedy liczba jest parzysta, w przeciwnym przypadku jest nieparzysta. Utwór pochodzi z albumu "Literki I Cyferki Z Rybką Mini Mini"iTunes - https://itunes.apple.com/pl/album/literki-i-cyferki-z-rybka/id931494134Spotify - http:/ Macie, pomyślałem, że komuś się przyda1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518, 3519, 3520, 3521, 3522, 3522, 4963, 4964, 4965, 4966, 4967, 4968, 4969, 4970, 4971, 4972, 4973, 4974, 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985, 4986, 4987, 4988, 4989, 4990, 4991, 4992, 4993, 4994, 4995, 4996, 4997, 4998, 4999, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, 5140, 5141, 5142, 5143, 5144, 5145, 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154, 5155, 5156, 5157, 5158, 5159, 5160, 5161, 5162, 5163, 5164, 5165, 5166, 5167, 5168, 5169, 5170, 5171, 5172, 5173, 5174, 5175, 5176, 5177, 5178, 5179, 5180, 5181, 5182, 5183, 5184, 5185, 5186, 5187, 5188, 5189, 5190, 5191, 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5199, 5200, 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, 5214, 5215, 5216, 5217, 5218, 5219, 5220, 5221, 5222, 5223, 5224, 5225, 5226, 5227, 5228, 5229, 5230, 5231, 5232, 5233, 5234, 5235, 5236, 5237, 5238, 5239, 5240, 5241, 5242, 5243, 5244, 5245, 5246, 5247, 5248, 5249, 5250, 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5262, 5263, 5264, 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, 5278, 5279, 5280, 5281, 5282, 5283, 5284, 5285, 5286, 5287, 5288, 5289, 5290, 5291, 5292, 5293, 5294, 5295, 5296, 5297, 5298, 5299, 5300, 5301, 5302, 5303, 5304, 5305, 5306, 5307, 5308, 5309, 5310, 5311, 5312, 5313, 5314, 5315, 5316, 5317, 5318, 5319, 5320, 5321, 5322, 5323, 5324, 5325, 5326, 5327, 5328, 5329, 5330, 5331, 5332, 5333, 5334, 5335, 5336, 5337, 5338, 5339, 5340, 5341, 5342, 5343, 5344, 5345, 5346, 5347, 5348, 5349, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 5357, 5358, 5359, 5360, 5361, 5362, 5363, 5364, 5365, 5366, 5367, 5368, 5369, 5370, 5371, 5372, 5373, 5374, 5375, 5376, 5377, 5378, 5379, 5380, 5381, 5382, 5383, 5384, 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393, 5394, 5395, 5396, 5397, 5398, 5399, 5400, 5401, 5402, 5403, 5404, 5405, 5406, 5407, 5408, 5409, 5410, 5411, 5412, 5413, 5414, 5415, 5416, 5417, 5418, 5419, 5420, 5421, 5422, 5423, 5424, 5425, 5426, 5427, 5428, 5429, 5430, 5431, 5432, 5433, 5434, 5435, 5436, 5437, 5438, 5439, 5440, 5441, 5442, 5443, 5444, 5445, 5446, 5447, 5448, 5449, 5450, 5451, 5452, 5453, 5454, 5455, 5456, 5457, 5458, 5459, 5460, 5461, 5462, 5463, 5464, 5465, 5466, 5467, 5468, 5469, 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, 5478, 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, 5488, 5489, 5490, 5491, 5492, 5493, 5494, 5495, 5496, 5497, 5498, 5499, 5500, 5501, 5502, 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5515, 5516, 5517, 5518, 5519, 5520, 5521, 5522, 5523, 5524, 5525, 5526, 5527, 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, 5537, 5538, 5539, 5540, 5541, 5542, 5543, 5544, 5545, 5546, 5547, 5548, 5549, 5550, 5551, 5552, 5553, 5554, 5555, 5556, 5557, 5558, 5559, 5560, 5561, 5562, 5563, 5564, 5565, 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, 5574, 5575, 5576, 5577, 5578, 5579, 5580, 5581, 5582, 5583, 5584, 5585, 5586, 5587, 5588, 5589, 5590, 5591, 5592, 5593, 5594, 5595, 5596, 5597, 5598, 5599, 5600, 5601, 5602, 5603, 5604, 5605, 5606, 5607, 5608, 5609, 5610, 5611, 5612, 5613, 5614, 5615, 5616, 5617, 5618, 5619, 5620, 5621, 5622, 5623, 5624, 5625, 5626, 5627, 5628, 5629, 5630, 5631, 5632, 5633, 5634, 5635, 5636, 5637, 5638, 5639, 5640, 5641, 5642, 5643, 5644, 5645, 5646, 5647, 5648, 5649, 5650, 5651, 5652, 5653, 5654, 5655, 5656, 5657, 5658, 5659, 5660, 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5669, 5670, 5671, 5672, 5673, 5674, 5675, 5676, 5677, 5678, 5679, 5680, 5681, 5682, 5683, 5684, 5685, 5686, 5687, 5688, 5689, 5690, 5691, 5692, 5693, 5694, 5695, 5696, 5697, 5698, 5699, 5700, 5701, 5702, 5703, 5704, 5705, 5706, 5707, 5708, 5709, 5710, 5711, 5712, 5713, 5714, 5715, 5716, 5717, 5718, 5719, 5720, 5721, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, 5730, 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5740, 5741, 5742, 5743, 5744, 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, 5753, 5754, 5755, 5756, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, 5765, 5766, 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776, 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, 5788, 5789, 5790, 5791, 5792, 5793, 5794, 5795, 5796, 5797, 5798, 5799, 5800, 5801, 5802, 5803, 5804, 5805, 5806, 5807, 5808, 5809, 5810, 5811, 5812, 5813, 5814, 5815, 5816, 5817, 5818, 5819, 5820, 5821, 5822, 5823, 5824, 5825, 5826, 5827, 5828, 5829, 5830, 5831, 5832, 5833, 5834, 5835, 5836, 5837, 5838, 5839, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5847, 5848, 5849, 5850, 5851, 5852, 5853, 5854, 5855, 5856, 5857, 5858, 5859, 5860, 5861, 5862, 5863, 5864, 5865, 5866, 5867, 5868, 5869, 5870, 5871, 5872, 5873, 5874, 5875, 5876, 5877, 5878, 5879, 5880, 5881, 5882, 5883, 5884, 5885, 5886, 5887, 5888, 5889, 5890, 5891, 5892, 5893, 5894, 5895, 5896, 5897, 5898, 5899, 5900, 5901, 5902, 5903, 5904, 5905, 5906, 5907, 5908, 5909, 5910, 5911, 5912, 5913, 5914, 5915, 5916, 5917, 5918, 5919, 5920, 5921, 5922, 5923, 5924, 5925, 5926, 5927, 5928, 5929, 5930, 5931, 5932, 5933, 5934, 5935, 5936, 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 5946, 5947, 5948, 5949, 5950, 5951, 5952, 5953, 5954, 5955, 5956, 5957, 5958, 5959, 5960, 5961, 5962, 5963, 5964, 5965, 5966, 5967, 5968, 5969, 5970, 5971, 5972, 5973, 5974, 5975, 5976, 5977, 5978, 5979, 5980, 5981, 5982, 5983, 5984, 5985, 5986, 5987, 5988, 5989, 5990, 5991, 5992, 5993, 5994, 5995, 5996, 5997, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, 6019, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, 6030, 6031, 6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, 6041, 6042, 6043, 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059, 6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 6077, 6078, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 6087, 6088, 6089, 6090, 6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100, 6101, 6102, 6103, 6104, 6105, 6106, 6107, 6108, 6109, 6110, 6111, 6112, 6113, 6114, 6115, 6116, 6117, 6118, 6119, 6120, 6121, 6122, 6123, 6124, 6125, 6126, 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136, 6137, 6138, 6139, 6140, 6141, 6142, 6143, 6144, 6145, 6146, 6147, 6148, 6149, 6150, 6151, 6152, 6153, 6154, 6155, 6156, 6157, 6158, 6159, 6160, 6161, 6162, 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, 6190, 6191, 6192, 6193, 6194, 6195, 6196, 6197, 6198, 6199, 6200, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6210, 6211, 6212, 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, 6222, 6223, 6224, 6225, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, 6236, 6237, 6238, 6239, 6240, 6241, 6242, 6243, 6244, 6245, 6246, 6247, 6248, 6249, 6250, 6251, 6252, 6253, 6254, 6255, 6256, 6257, 6258, 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6266, 6267, 6268, 6269, 6270, 6271, 6272, 6273, 6274, 6275, 6276, 6277, 6278, 6279, 6280, 6281, 6282, 6283, 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, 6294, 6295, 6296, 6297, 6298, 6299, 6300, 6301, 6302, 6303, 6304, 6305, 6306, 6307, 6308, 6309, 6310, 6311, 6312, 6313, 6314, 6315, 6316, 6317, 6318, 6319, 6320, 6321, 6322, 6323, 6324, 6325, 6326, 6327, 6328, 6329, 6330, 6331, 6332, 6333, 6334, 6335, 6336, 6337, 6338, 6339, 6340, 6341, 6342, 6343, 6344, 6345, 6346, 6347, 6348, 6349, 6350, 6351, 6352, 6353, 6354, 6355, 6356, 6357, 6358, 6359, 6360, 6361, 6362, 6363, 6364, 6365, 6366, 6367, 6368, 6369, 6370, 6371, 6372, 6373, 6374, 6375, 6376, 6377, 6378, 6379, 6380, 6381, 6382, 6383, 6384, 6385, 6386, 6387, 6388, 6389, 6390, 6391, 6392, 6393, 6394, 6395, 6396, 6397, 6398, 6399, 6400, 6401, 6402, 6403, 6404, 6405, 6406, 6407, 6408, 6409, 6410, 6411, 6412, 6413, 6414, 6415, 6416, 6417, 6418, 6419, 6420, 6421, 6422, 6423, 6424, 6425, 6426, 6427, 6428, 6429, 6430, 6431, 6432, 6433, 6434, 6435, 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 6444, 6445, 6446, 6447, 6448, 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6459, 6460, 6461, 6462, 6463, 6464, 6465, 6466, 6467, 6468, 6469, 6470, 6471, 6472, 6473, 6474, 6475, 6476, 6477, 6478, 6479, 6480, 6481, 6482, 6483, 6484, 6485, 6486, 6487, 6488, 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496, 6497, 6498, 6499, 6500, 6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509, 6510, 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6522, 6523, 6524, 6525, 6526, 6527, 6528, 6529, 6530, 6531, 6532, 6533, 6534, 6535, 6536, 6537, 6538, 6539, 6540, 6541, 6542, 6543, 6544, 6545, 6546, 6547, 6548, 6549, 6550, 6551, 6552, 6553, 6554, 6555, 6556, 6557, 6558, 6559, 6560, 6561, 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578, 6579, 6580, 6581, 6582, 6583, 6584, 6585, 6586, 6587, 6588, 6589, 6590, 6591, 6592, 6593, 6594, 6595, 6596, 6597, 6598, 6599, 6600, 6601, 6602, 6603, 6604, 6605, 6606, 6607, 6608, 6609, 6610, 6611, 6612, 6613, 6614, 6615, 6616, 6617, 6618, 6619, 6620, 6621, 6622, 6623, 6624, 6625, 6626, 6627, 6628, 6629, 6630, 6631, 6632, 6633, 6634, 6635, 6636, 6637, 6638, 6639, 6640, 6641, 6642, 6643, 6644, 6645, 6646, 6647, 6648, 6649, 6650, 6651, 6652, 6653, 6654, 6655, 6656, 6657, 6658, 6659, 6660, 6661, 6662, 6663, 6664, 6665, 6666, 6667, 6668, 6669, 6670, 6671, 6672, 6673, 6674, 6675, 6676, 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684, 6685, 6686, 6687, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 6695, 6696, 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6704, 6705, 6706, 6707, 6708, 6709, 6710, 6711, 6712, 6713, 6714, 6715, 6716, 6717, 6718, 6719, 6720, 6721, 6722, 6723, 6724, 6725, 6726, 6727, 6728, 6729, 6730, 6731, 6732, 6733, 6734, 6735, 6736, 6737, 6738, 6739, 6740, 6741, 6742, 6743, 6744, 6745, 6746, 6747, 6748, 6749, 6750, 6751, 6752, 6753, 6754, 6755, 6756, 6757, 6758, 6759, 6760, 6761, 6762, 6763, 6764, 6765, 6766, 6767, 6768, 6769, 6770, 6771, 6772, 6773, 6774, 6775, 6776, 6777, 6778, 6779, 6780, 6781, 6782, 6783, 6784, 6785, 6786, 6787, 6788, 6789, 6790, 6791, 6792, 6793, 6794, 6795, 6796, 6797, 6798, 6799, 6800, 6801, 6802, 6803, 6804, 6805, 6806, 6807, 6808, 6809, 6810, 6811, 6812, 6813, 6814, 6815, 6816, 6817, 6818, 6819, 6820, 6821, 6822, 6823, 6824, 6825, 6826, 6827, 6828, 6829, 6830, 6831, 6832, 6833, 6834, 6835, 6836, 6837, 6838, 6839, 6840, 6841, 6842, 6843, 6844, 6845, 6846, 6847, 6848, 6849, 6850, 6851, 6852, 6853, 6854, 6855, 6856, 6857, 6858, 6859, 6860, 6861, 6862, 6863, 6864, 6865, 6866, 6867, 6868, 6869, 6870, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6880, 6881, 6882, 6883, 6884, 6885, 6886, 6887, 6888, 6889, 6890, 6891, 6892, 6893, 6894, 6895, 6896, 6897, 6898, 6899, 6900, 6901, 6902, 6903, 6904, 6905, 6906, 6907, 6908, 6909, 6910, 6911, 6912, 6913, 6914, 6915, 6916, 6917, 6918, 6919, 6920, 6921, 6922, 6923, 6924, 6925, 6926, 6927, 6928, 6929, 6930, 6931, 6932, 6933, 6934, 6935, 6936, 6937, 6938, 6939, 6940, 6941, 6942, 6943, 6944, 6945, 6946, 6947, 6948, 6949, 6950, 6951, 6952, 6953, 6954, 6955, 6956, 6957, 6958, 6959, 6960, 6961, 6962, 6963, 6964, 6965, 6966, 6967, 6968, 6969, 6970, 6971, 6972, 6973, 6974, 6975, 6976, 6977, 6978, 6979, 6980, 6981, 6982, 6983, 6984, 6985, 6986, 6987, 6988, 6989, 6990, 6991, 6992, 6993, 6994, 6995, 6996, 6997, 6998, 6999, 7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 7026, 7027, 7028, 7029, 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7037, 7038, 7039, 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7058, 7059, 7060, 7061, 7062, 7063, 7064, 7065, 7066, 7067, 7068, 7069, 7070, 7071, 7072, 7073, 7074, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, 7086, 7087, 7088, 7089, 7090, 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7098, 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7106, 7107, 7108, 7109, 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117, 7118, 7119, 7120, 7121, 7122, 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130, 7131, 7132, 7133, 7134, 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7142, 7143, 7144, 7145, 7146, 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, 7155, 7156, 7157, 7158, 7159, 7160, 7161, 7162, 7163, 7164, 7165, 7166, 7167, 7168, 7169, 7170, 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, 7179, 7180, 7181, 7182, 7183, 7184, 7185, 7186, 7187, 7188, 7189, 7190, 7191, 7192, 7193, 7194, 7195, 7196, 7197, 7198, 7199, 7200, 7201, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, 7219, 7220, 7221, 7222, 7223, 7224, 7225, 7226, 7227, 7228, 7229, 7230, 7231, 7232, 7233, 7234, 7235, 7236, 7237, 7238, 7239, 7240, 7241, 7242, 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7255, 7256, 7257, 7258, 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, 7275, 7276, 7277, 7278, 7279, 7280, 7281, 7282, 7283, 7284, 7285, 7286, 7287, 7288, 7289, 7290, 7291, 7292, 7293, 7294, 7295, 7296, 7297, 7298, 7299, 7300, 7301, 7302, 7303, 7304, 7305, 7306, 7307, 7308, 7309, 7310, 7311, 7312, 7313, 7314, 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, 7323, 7324, 7325, 7326, 7327, 7328, 7329, 7330, 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, 7355, 7356, 7357, 7358, 7359, 7360, 7361, 7362, 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371, 7372, 7373, 7374, 7375, 7376, 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, 7395, 7396, 7397, 7398, 7399, 7400, 7401, 7402, 7403, 7404, 7405, 7406, 7407, 7408, 7409, 7410, 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420, 7421, 7422, 7423, 7424, 7425, 7426, 7427, 7428, 7429, 7430, 7431, 7432, 7433, 7434, 7435, 7436, 7437, 7438, 7439, 7440, 7441, 7442, 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453, 7454, 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, 7467, 7468, 7469, 7470, 7471, 7472, 7473, 7474, 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486, 7487, 7488, 7489, 7490, 7491, 7492, 7493, 7494, 7495, 7496, 7497, 7498, 7499, 7500, 7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509, 7510, 7511, 7512, 7513, 7514, 7515, 7516, 7517, 7518, 7519, 7520, 7521, 7522, 7523, 7524, 7525, 7526, 7527, 7528, 7529, 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, 7555, 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563, 7564, 7565, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7575, 7576, 7577, 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585, 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, 7595, 7596, 7597, 7598, 7599, 7600, 7601, 7602, 7603, 7604, 7605, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7613, 7614, 7615, 7616, 7617, 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7626, 7627, 7628, 7629, 7630, 7631, 7632, 7633, 7634, 7635, 7636, 7637, 7638, 7639, 7640, 7641, 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7649, 7650, 7651, 7652, 7653, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665, 7666, 7667, 7668, 7669, 7670, 7671, 7672, 7673, 7674, 7675, 7676, 7677, 7678, 7679, 7680, 7681, 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7714, 7715, 7716, 7717, 7718, 7719, 7720, 7721, 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, 7834, 7835, 7836, 7837, 7838, 7839, 7840, 7841, 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7851, 7852, 7853, 7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, 7944, 7945, 7946, 7947, 7948, 7949, 7950, 7951, 7952, 7953, 7954, 7955, 7956, 7957, 7958, 7959, 7960, 7961, 7962, 7963, 7964, 7965, 7966, 7967, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977, 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, 7986, 7987, 7988, 7989, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, 8040, 8041, 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049, 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8057, 8058, 8059, 8060, 8061, 8062, 8063, 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8109, 8110, 8111, 8112, 8113, 8114, 8115, 8116, 8117, 8118, 8119, 8120, 8121, 8122, 8123, 8124, 8125, 8126, 8127, 8128, 8129, 8130, 8131, 8132, 8133, 8134, 8135, 8136, 8137, 8138, 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156, 8157, 8158, 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8168, 8169, 8170, 8171, 8172, 8173, 8174, 8175, 8176, 8177, 8178, 8179, 8180, 8181, 8182, 8183, 8184, 8185, 8186, 8187, 8188, 8189, 8190, 8191, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8203, 8204, 8205, 8206, 8207, 8208, 8209, 8210, 8211, 8212, 8213, 8214, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8223, 8224, 8225, 8226, 8227, 8228, 8229, 8230, 8231, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239, 8240, 8241, 8242, 8243, 8244, 8245, 8246, 8247, 8248, 8249, 8250, 8251, 8252, 8253, 8254, 8255, 8256, 8257, 8258, 8259, 8260, 8261, 8262, 8263, 8264, 8265, 8266, 8267, 8268, 8269, 8270, 8271, 8272, 8273, 8274, 8275, 8276, 8277, 8278, 8279, 8280, 8281, 8282, 8283, 8284, 8285, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, 8297, 8298, 8299, 8300, 8301, 8302, 8303, 8304, 8305, 8306, 8307, 8308, 8309, 8310, 8311, 8312, 8313, 8314, 8315, 8316, 8317, 8318, 8319, 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8327, 8328, 8329, 8330, 8331, 8332, 8333, 8334, 8335, 8336, 8337, 8338, 8339, 8340, 8341, 8342, 8343, 8344, 8345, 8346, 8347, 8348, 8349, 8350, 8351, 8352, 8353, 8354, 8355, 8356, 8357, 8358, 8359, 8360, 8361, 8362, 8363, 8364, 8365, 8366, 8367, 8368, 8369, 8370, 8371, 8372, 8373, 8374, 8375, 8376, 8377, 8378, 8379, 8380, 8381, 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391, 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8404, 8405, 8406, 8407, 8408, 8409, 8410, 8411, 8412, 8413, 8414, 8415, 8416, 8417, 8418, 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428, 8429, 8430, 8431, 8432, 8433, 8434, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442, 8443, 8444, 8445, 8446, 8447, 8448, 8449, 8450, 8451, 8452, 8453, 8454, 8455, 8456, 8457, 8458, 8459, 8460, 8461, 8462, 8463, 8464, 8465, 8466, 8467, 8468, 8469, 8470, 8471, 8472, 8473, 8474, 8475, 8476, 8477, 8478, 8479, 8480, 8481, 8482, 8483, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8491, 8492, 8493, 8494, 8495, 8496, 8497, 8498, 8499, 8500, 8501, 8502, 8503, 8504, 8505, 8506, 8507, 8508, 8509, 8510, 8511, 8512, 8513, 8514, 8515, 8516, 8517, 8518, 8519, 8520, 8521, 8522, 8523, 8524, 8525, 8526, 8527, 8528, 8529, 8530, 8531, 8532, 8533, 8534, 8535, 8536, 8537, 8538, 8539, 8540, 8541, 8542, 8543, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 8573, 8574, 8575, 8576, 8577, 8578, 8579, 8580, 8581, 8582, 8583, 8584, 8585, 8586, 8587, 8588, 8589, 8590, 8591, 8592, 8593, 8594, 8595, 8596, 8597, 8598, 8599, 8600, 8601, 8602, 8603, 8604, 8605, 8606, 8607, 8608, 8609, 8610, 8611, 8612, 8613, 8614, 8615, 8616, 8617, 8618, 8619, 8620, 8621, 8622, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8631, 8632, 8633, 8634, 8635, 8636, 8637, 8638, 8639, 8640, 8641, 8642, 8643, 8644, 8645, 8646, 8647, 8648, 8649, 8650, 8651, 8652, 8653, 8654, 8655, 8656, 8657, 8658, 8659, 8660, 8661, 8662, 8663, 8664, 8665, 8666, 8667, 8668, 8669, 8670, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679, 8680, 8681, 8682, 8683, 8684, 8685, 8686, 8687, 8688, 8689, 8690, 8691, 8692, 8693, 8694, 8695, 8696, 8697, 8698, 8699, 8700, 8701, 8702, 8703, 8704, 8705, 8706, 8707, 8708, 8709, 8710, 8711, 8712, 8713, 8714, 8715, 8716, 8717, 8718, 8719, 8720, 8721, 8722, 8723, 8724, 8725, 8726, 8727, 8728, 8729, 8730, 8731, 8732, 8733, 8734, 8735, 8736, 8737, 8738, 8739, 8740, 8741, 8742, 8743, 8744, 8745, 8746, 8747, 8748, 8749, 8750, 8751, 8752, 8753, 8754, 8755, 8756, 8757, 8758, 8759, 8760, 8761, 8762, 8763, 8764, 8765, 8766, 8767, 8768, 8769, 8770, 8771, 8772, 8773, 8774, 8775, 8776, 8777, 8778, 8779, 8780, 8781, 8782, 8783, 8784, 8785, 8786, 8787, 8788, 8789, 8790, 8791, 8792, 8793, 8794, 8795, 8796, 8797, 8798, 8799, 8800, 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8809, 8810, 8811, 8812, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8822, 8823, 8824, 8825, 8826, 8827, 8828, 8829, 8830, 8831, 8832, 8833, 8834, 8835, 8836, 8837, 8838, 8839, 8840, 8841, 8842, 8843, 8844, 8845, 8846, 8847, 8848, 8849, 8850, 8851, 8852, 8853, 8854, 8855, 8856, 8857, 8858, 8859, 8860, 8861, 8862, 8863, 8864, 8865, 8866, 8867, 8868, 8869, 8870, 8871, 8872, 8873, 8874, 8875, 8876, 8877, 8878, 8879, 8880, 8881, 8882, 8883, 8884, 8885, 8886, 8887, 8888, 8889, 8890, 8891, 8892, 8893, 8894, 8895, 8896, 8897, 8898, 8899, 8900, 8901, 8902, 8903, 8904, 8905, 8906, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915, 8916, 8917, 8918, 8919, 8920, 8921, 8922, 8923, 8924, 8925, 8926, 8927, 8928, 8929, 8930, 8931, 8932, 8933, 8934, 8935, 8936, 8937, 8938, 8939, 8940, 8941, 8942, 8943, 8944, 8945, 8946, 8947, 8948, 8949, 8950, 8951, 8952, 8953, 8954, 8955, 8956, 8957, 8958, 8959, 8960, 8961, 8962, 8963, 8964, 8965, 8966, 8967, 8968, 8969, 8970, 8971, 8972, 8973, 8974, 8975, 8976, 8977, 8978, 8979, 8980, 8981, 8982, 8983, 8984, 8985, 8986, 8987, 8988, 8989, 8990, 8991, 8992, 8993, 8994, 8995, 8996, 8997, 8998, 8999, 9000, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9035, 9036, 9037, 9038, 9039, 9040, 9041, 9042, 9043, 9044, 9045, 9046, 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067, 9068, 9069, 9070, 9071, 9072, 9073, 9074, 9075, 9076, 9077, 9078, 9079, 9080, 9081, 9082, 9083, 9084, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, 9095, 9096, 9097, 9098, 9099, 9100, 9101, 9102, 9103, 9104, 9105, 9106, 9107, 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, 9116, 9117, 9118, 9119, 9120, 9121, 9122, 9123, 9124, 9125, 9126, 9127, 9128, 9129, 9130, 9131, 9132, 9133, 9134, 9135, 9136, 9137, 9138, 9139, 9140, 9141, 9142, 9143, 9144, 9145, 9146, 9147, 9148, 9149, 9150, 9151, 9152, 9153, 9154, 9155, 9156, 9157, 9158, 9159, 9160, 9161, 9162, 9163, 9164, 9165, 9166, 9167, 9168, 9169, 9170, 9171, 9172, 9173, 9174, 9175, 9176, 9177, 9178, 9179, 9180, 9181, 9182, 9183, 9184, 9185, 9186, 9187, 9188, 9189, 9190, 9191, 9192, 9193, 9194, 9195, 9196, 9197, 9198, 9199, 9200, 9201, 9202, 9203, 9204, 9205, 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213, 9214, 9215, 9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223, 9224, 9225, 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253, 9254, 9255, 9256, 9257, 9258, 9259, 9260, 9261, 9262, 9263, 9264, 9265, 9266, 9267, 9268, 9269, 9270, 9271, 9272, 9273, 9274, 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9283, 9284, 9285, 9286, 9287, 9288, 9289, 9290, 9291, 9292, 9293, 9294, 9295, 9296, 9297, 9298, 9299, 9300, 9301, 9302, 9303, 9304, 9305, 9306, 9307, 9308, 9309, 9310, 9311, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9322, 9323, 9324, 9325, 9326, 9327, 9328, 9329, 9330, 9331, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345, 9346, 9347, 9348, 9349, 9350, 9351, 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359, 9360, 9361, 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9369, 9370, 9371, 9372, 9373, 9374, 9375, 9376, 9377, 9378, 9379, 9380, 9381, 9382, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391, 9392, 9393, 9394, 9395, 9396, 9397, 9398, 9399, 9400, 9401, 9402, 9403, 9404, 9405, 9406, 9407, 9408, 9409, 9410, 9411, 9412, 9413, 9414, 9415, 9416, 9417, 9418, 9419, 9420, 9421, 9422, 9423, 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432, 9433, 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443, 9444, 9445, 9446, 9447, 9448, 9449, 9450, 9451, 9452, 9453, 9454, 9455, 9456, 9457, 9458, 9459, 9460, 9461, 9462, 9463, 9464, 9465, 9466, 9467, 9468, 9469, 9470, 9471, 9472, 9473, 9474, 9475, 9476, 9477, 9478, 9479, 9480, 9481, 9482, 9483, 9484, 9485, 9486, 9487, 9488, 9489, 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502, 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9512, 9513, 9514, 9515, 9516, 9517, 9518, 9519, 9520, 9521, 9522, 9523, 9524, 9525, 9526, 9527, 9528, 9529, 9530, 9531, 9532, 9533, 9534, 9535, 9536, 9537, 9538, 9539, 9540, 9541, 9542, 9543, 9544, 9545, 9546, 9547, 9548, 9549, 9550, 9551, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9581, 9582, 9583, 9584, 9585, 9586, 9587, 9588, 9589, 9590, 9591, 9592, 9593, 9594, 9595, 9596, 9597, 9598, 9599, 9600, 9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608, 9609, 9610, 9611, 9612, 9613, 9614, 9615, 9616, 9617, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9625, 9626, 9627, 9628, 9629, 9630, 9631, 9632, 9633, 9634, 9635, 9636, 9637, 9638, 9639, 9640, 9641, 9642, 9643, 9644, 9645, 9646, 9647, 9648, 9649, 9650, 9651, 9652, 9653, 9654, 9655, 9656, 9657, 9658, 9659, 9660, 9661, 9662, 9663, 9664, 9665, 9666, 9667, 9668, 9669, 9670, 9671, 9672, 9673, 9674, 9675, 9676, 9677, 9678, 9679, 9680, 9681, 9682, 9683, 9684, 9685, 9686, 9687, 9688, 9689, 9690, 9691, 9692, 9693, 9694, 9695, 9696, 9697, 9698, 9699, 9700, 9701, 9702, 9703, 9704, 9705, 9706, 9707, 9708, 9709, 9710, 9711, 9712, 9713, 9714, 9715, 9716, 9717, 9718, 9719, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 9727, 9728, 9729, 9730, 9731, 9732, 9733, 9734, 9735, 9736, 9737, 9738, 9739, 9740, 9741, 9742, 9743, 9744, 9745, 9746, 9747, 9748, 9749, 9750, 9751, 9752, 9753, 9754, 9755, 9756, 9757, 9758, 9759, 9760, 9761, 9762, 9763, 9764, 9765, 9766, 9767, 9768, 9769, 9770, 9771, 9772, 9773, 9774, 9775, 9776, 9777, 9778, 9779, 9780, 9781, 9782, 9783, 9784, 9785, 9786, 9787, 9788, 9789, 9790, 9791, 9792, 9793, 9794, 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 9828, 9829, 9830, 9831, 9832, 9833, 9834, 9835, 9836, 9837, 9838, 9839, 9840, 9841, 9842, 9843, 9844, 9845, 9846, 9847, 9848, 9849, 9850, 9851, 9852, 9853, 9854, 9855, 9856, 9857, 9858, 9859, 9860, 9861, 9862, 9863, 9864, 9865, 9866, 9867, 9868, 9869, 9870, 9871, 9872, 9873, 9874, 9875, 9876, 9877, 9878, 9879, 9880, 9881, 9882, 9883, 9884, 9885, 9886, 9887, 9888, 9889, 9890, 9891, 9892, 9893, 9894, 9895, 9896, 9897, 9898, 9899, 9900, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9908, 9909, 9910, 9911, 9912, 9913, 9914, 9915, 9916, 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924, 9925, 9926, 9927, 9928, 9929, 9930, 9931, 9932, 9933, 9934, 9935, 9936, 9937, 9938, 9939, 9940, 9941, 9942, 9943, 9944, 9945, 9946, 9947, 9948, 9949, 9950, 9951, 9952, 9953, 9954, 9955, 9956, 9957, 9958, 9959, 9960, 9961, 9962, 9963, 9964, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9972, 9973, 9974, 9975, 9976, 9977, 9978, 9979, 9980, 9981, 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999, 10000
Liczby mieszane. - Liczby - test - BR-I 1-10 Vocab - Liczby parzyste . Tvořte své lekce lépe a rychleji. Vytvořit Aktivitu Přihlásit Se Registrace Čeština
JavaScript - random() - generator liczb losowych Jest to metoda obiektu: Math Opis Za generowanie liczb losowych odpowiada metoda Random obiektu Math. Metoda ta generuje losowo liczbę z zakresu od 0 (włącznie) do 1 (bez jedynki). Składnia Parametry Przykłady Przykład 1 Generuje liczbę losową od 0 do 1. alert( Przykład 2 - Losowanie liczby całkowitej z danego przedziału. Generuje liczbę losową z zakresu od 1 do 100. W przykładzie użyliśmy jeszcze innej metody obiektu Math, a mianowicie metody zaokrąglania w dół do liczby całkowitej floor(). alert( Wsparcie dla przeglądarek TakTakTakTakTak Powiązane artykuły round() floor() Uwagi Aby wylosować liczbę całkowitą z przedziału , stosujemy wyrażenie: Jeżeli użyjemy tradycyjnego zaokrąglania liczb za pomocą metody round(), uzyskamy wówczas liczby z przedziału .Inne zagadnienia z tej lekcjiInstrukcje warunkowe w JavaScriptinstrukcje warunkowe w JavaScript. JavaScript udostępnia kilka instrukcji warunkowych, czyli takich, które w zależności od wartości wyrażenia sterują przebiegiem w JavaScriptPętle for, while, do ... while w JavaScript. Pętle to specjalny fragment kodu, który odpowiada za powtarzanie poleceń zawartych wewnątrz pętli taką ilość razy, jaka w pętli zostanie zdefiniowana poprzez odpowiednie w JavaScriptFunkcje w JavaScript - jak stosować, co to jest funkcja anonimowa? Funkcje to w JavaScript bardzo wygodny sposób na wielokrotne wykorzystanie tego samego kodu i to w sposób w JavaScriptTablice w JavaScript - opis stosowania tablic i ich metod. Tablice w JavaScript, to specjalny typ danych, który pozwala w jednej zmiennej przechowywać wiele - JavaScriptOpis obiektu Math w JavaScript. Dzięki niemu możemy w JavaScript odwoływać się do stałych matematycznych i dokonywać obliczeń. Wykaz metod, które służą do obliczania wartości funkcji dialogowe w JavaScriptRodzaje i stosowanie okienek dialogowych w Javascript. W JavaScript mamy do wyboru trzy rodzaje okienek dialogowych, wyzwalanych przez metody alert(), confirm() i prompt().String - tekst w JavaScriptOpis obiektu String w JavaScript. Dzięki temu obiektowi możemy w JavaScript przechowywać i przetwarzać wszelkie teksty. Znaki w tekście są indeksowane od liczby regularneWyrażenia regularne w JavaScript. Wyrażenie regularne to szablon tekstowy, wzorzec, który opisuje pewien zestaw znaków. Artykuł zawiera wykaz metaznaków wraz z przykładami ich date() - data i czas w JavaScriptObsługa dat i czasu w JavaScript. W JavaScript mamy do dyspozycji obiekt date(), który daje nam możliwość dostępu do dat i manipulowania datami oraz czasem.© 2016-11-01, ART-3265 Niektóre treści nie są dostosowane do Twojego profilu. Jeżeli jesteś pełnoletni możesz wyrazić zgodę na przetwarzanie swoich danych osobowych. W ten sposób będziesz miał także wpływ na rozwój naszego serwisu.
Odliczając od zera w górę, liczby nieparzyste występują na przemian z parzystymi i nigdy ze sobą nie sąsiadują. Nawet duże, składające się z wielu cyfr liczby szybko sklasyfikujesz jako parzyste lub nieparzyste, patrząc na ostatnią ich cyfrę. Jeśli jest ona nieparzysta, to cała liczba też jest parzysta. Na przykład - 1,696,863.
Opis Pierwsze gry do nauki liczenia w zakresie 0-10 Puzzle dwustronne w kształcie koła pomagające w rozpoznawaniu liczb od 0 do 10. Na każdym kole są przedstawione 4 reprezentacje liczby: liczba pisana, liczba oczek na kostce, obrazek z daną cyfrą za pomocą palców u ręki, zbiór elementów. Zadaniem dziecka jest ułożenie koła z właściwymi elementami. Puzzle są dwustronne: dziecko samodzielnie odwraca koło, aby sprawdzić poprawność wykonanego zadania. Wsparcie dla osób niepełnosprawnych: uczy rozumienia i nazywania stosunków liczbowych. Rozwijanie umiejętności : Budowanie i rozkładanie liczb w zakresie 0-10 Rozpoznawanie i skojarzenie różnych reprezentacji liczby Zapamiętywanie liczb Zawartość: 11 kół – 44 elementy: każde koło składa się z 4 elementów Liczby nieparzyste w kolorze czerwonym; liczby parzyste w kolorze niebieskim Ø koła: 13 cm Opakowanie: kolorowe kartonowe Wiek dziecka: 3 lata + Normy: Zgodne z EN71
Program wyswietlajace liczby parzyste i nie parzyste. Witam! Napisać program który: zapyta użytkownika o ilość podawanych liczb całkowitych, następnie zapyta o kolejne liczby. Po wprowadzeniu wszystkich liczb, program wypisze w konsoli ile z nich było parzystych a ile nieparzystych. Uwaga: w programie należy użyć pętli while.
Co to jest Javascript? JS jest to interpretowany skryptowy język programowania wykonywany po stronie klienta. Czy są jakieś zasady programowania w dobrym stylu? Co to znaczy programować w dobrym stylu? Oczywiście, że są takie zasady. Wiąże się to z pracą w zespole. Wtedy wiele osób ogląda nasz kod źródłowy / skrypt. Czasem jak otwieramy nasz stary kod to łatwiej będzie się nam odnaleźć jak będą komentarze, wcięcia, niż jakby ich nie było. Kilka zasad programowania w dobrym stylu: każdą instrukcję piszemy w oddzielnym wierszu, dla czytelności kodu stosujemy wcięcia, stosujemy komentarze, używamy zrozumiałych nazw zmiennych, używamy notacji camelCase lub innej notacji, Składnia języka JS: każdą instrukcję oddzielamy średnikiem [ ; ], komentarze mogą składać się z jednej linii lub wielu linii [ // ] [/* */ ], wielkość liter w nazwach zmiennych ma znaczenie, Co to jest JavaScript? JavaScript to skryptowy język programowania wykonywany przez przeglądarkę po stronie klienta. Co można robić za pomocą JS? Za pomocą JS możemy: zmieniać dynamicznie wygląd wybranych elementów (wielkość tekstu, kolor, tło itp.) wykonać walidację formularzy wypełnianych przez użytkowników, ale nie zwalnia nas to z obowiązku walidacji wysłanych danych po stronie serwera. Jak sami wiecie są różni użytkownicy Internetu i na pewno znajdzie się bardzo wielu, którzy będą chcieli „sprawdzić” Waszą stronę wysyłać żądania poprzez AJAX (Asynchronous JavaScript and XML). Jest to technika tworzenia aplikacji internetowych, w której interakcja użytkownika z serwerem odbywa się bez przeładowywania całego dokumentu. Miejsca umieszczania skryptów w dokumencie HTML: w sekcji dokumentu HTML, w jakimkolwiek miejscu dokumentu HTML, na końcu dokumentu HTML. Sposoby umieszczania skryptów JS w HTML: używając znacznika , a cały skrypt znajduje się bezpośrednio w dokumencie HTML, (skrypt osadzony):np.: ... importując kod skryptu z zewnętrznego pliku .js:np.: ... atrybut type jest wymagany w HTML 4, ale opcjonalny w HTML 5 Instrukcją odpowiedzialną za wyświetlenie tekstu na stronie w javascript jest instrukcja Żeby wyświetlić tekst na stronie należy go umieścić w nawiasach okrągłych i w cudzysłowie: do wyświetlenia"); Na końcu każdej instrukcji należy umieścić średnik. Instrukcja mówi przeglądarce, żeby wykonała metodę write na obiekcie document. Obiekt document reprezentuje aktualną stronę. Przykład: Wpisz po znaczniku body taki skrypt i sprawdź działanie: skrypt"); Instrukcja pozwala również na wyświetlanie wartości liczbowych: Można również łączyć ze sobą kilka ciągów znaków z wartościami liczbowymi: jest pierwszy ciąg znaków " + 120 + "to jest drugi ciąg znaków"); Ćwiczenie: Proszę o wpisanie takiego skryptu i przeanalizowanie jego działania: Kowalski: "); - " + 31 + " lat"); - " + + " m"); - " + + " kg"); Typy danych w JS: W JS jest kilka typów danych i można na nich wykonywać operacje: liczby (Number), ciągi znaków (String), wartości logiczne (Boolean), obiekty (Object), tablice (Array), typy specjalne: Null, Undefined. Każdy z tych typów można przypisać do zmiennej. typ liczbowy – w porównaniu z innymi językami programowania nie uwzględnia on podziału na liczby całkowite i zmiennoprzecinkowe. Umożliwia wprowadzanie liczb w postaci dziesiętnej (np. 16), ósemkowej (np. 020) lub szesnastkowej (np. 0xF) dozwolona jest również notacja wykładnicza w postaci gdzie X stanowi część całkowitą, Y część dziesiętną, z Z jest wykładnikiem potęgi liczby 10 (np. Wartość dziesiętna Wartość ósemkowa Wartość szesnastkowa Notacja wykładnicza 1 01 0x1 8 010 0x8 123 0173 0x78 1024 02000 0x400 ciągi znaków (typ łańcuchowy) – to dowolne ciągi znaków. Należy umieścić je w cudzysłowie lub w apostrofach. W ciągach znaków mogą również wystąpić znaki specjalne np.: Sekwencja znaków Znaczenie \b Backspace \n Nowy wiersz \r Powrót karetki \f Nowa strona \" Cudzysłów \' Apostrof \\ Lewy ukośnik (backslash) Przykład zastosowania sekwencji znaków. Ciąg znaków do wyświetlenia Zapis w JS Trzeba wejść do katalogu C:\Windows\System "Trzeba wejść do katalogu C:\\Windows\\System" style="color:black;background:yellow" "style=\"color:black;background:yellow\" \/\/ "\\\/\\\/" Łańcuchy znaków to obiekty typu String. Na tych obiektach możemy wywoływać różne metody. W tabeli zawarte są najczęściej używane: Metoda Wywołanie Wynik Opis text = "Ala ma kota"; length 11 Zwraca długość ciągu w znakach charAt() m Zwraca znak na danej pozycji] charCodeAt 109 Zwraca kod ASCII znaku na podanej pozycji toUpperCase() ALA MA KOTA Zamienia wszystkie litery na wielkie toLowerCase() ala ma kota Zamienia wszystkie litery na małe indexOf() 7 Podaje pozycję szukanego tekstu. Jeżeli nie ma tekstu zwracana jest -1 lastIndexOf() 10 Podobnie do wcześniejszej metody, ale zwraca index ostatniego wystąpienia encodeUrl() Ala%20ma%20kota W niektórych przypadkach niepożądane jest stosowanie niektórych znaków: , spacja - # _ & % [ ] & ; : ? ' ( ) ~ | ` !. Z tej racji należy je w jakiś sposób zakodować. decodeUrl Ala ma kota Odkodowanie łańcucha znaków zakodowanego poprzednią metodą. substr() kota Pobiera część ciągu znaków. Długość tego ciągu znaków wyznacza drugi parametr. Brak drugiego parametru oznacza pobranie ciągu znaków do samego końca. substring() Ala Metoda podobna do poprzedniej. Różnica polega na tym, że drugi parametr określa pozycję znaku w ciągu. Jeżeli drugi parametr będzie większy, metoda zamieni miejscami te dwa parametry. slice() Ala Metoda bardzo podobna do poprzedniej. Zwraca ciąg znaków z podanego ciągu. split() ',2) Array('Ala', 'ma') Zwraca tablicę ciągów znaków podzieloną wg pierwszego parametru (spacji). Drugi parametr określa ile ma być elementów w tablicy. Nie podanie drugiego parametru zwróci w tym przypadku wszystkie wyrazy. replace() Ola ma kota Zamienia pierwsze wystąpienie szukanego ciągu i zamienia go na ciąg podany w drugim parametrze. Aby zamienić wszystkie wystąpienia danego ciągu należy skorzystać z wyrażeń regularnych Typ logiczny może przyjmować jedną z dwóch dostępnych wartości: true oraz false. Jest stosowany głównie przy budowaniu wyrażeń logicznych lub do porównywania danych. Typ obiektowy służy do reprezentacji obiektów. Najczęściej wykorzystuje się obiekty wbudowane oraz udostępniane przez przeglądarkę, ale nic nie stoi na przeszkodzie, aby stworzyć własny typ obiektowy. Typ tablicowy. Tablice w JS obsługiwane są przez klasę Array. Obiekt tej klasy, czyli tablicę, możemy tworzyć na trzy sposoby: var tabl = new Array(); //pusta tablica var tabl = new Array(10); //utworzenie tablicy 10 elem. var tabl = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); //utworzenie tablicy z podaniem elementów, które mają się w niej znaleźć. Możemy również utworzyć tablicę stosując nawiasy kwadratowe: var tabl = [ ]; var tabl = [ 10 ]; var tabl = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; Aby pobrać wartość pierwszego elementu tablicy należy posłużyć się składnią: tabl[0]. W nawiasy kwadratowe wpisujemy indeks elementu, który chcemy pobrać. Indeksy numerowane są od zera. Są również tablice wielowymiarowe i asocjacyjne. Typy specjalne dzielą się na dwa rodzaje: null – określa wartość pustą, undefined – określa wartość niezdefiniowaną. Można go przypisać do zmiennej bezpośrednio lub przyjmuje go zmienna, która nie została zainicjowana – nie przypisano do niej żadnej wartości. Co to jest zmienna? Zmienna jest to element programu pozwalający na przechowywanie danych różnych typów. W JavaScript nie wymaga się podania typu zmiennej podczas jej deklaracji. Ponadto typ zmiennej może ulec modyfikacji podczas wykonywania skryptu np. zmienne typu łańcuchowego (String) możemy przypisać wartość logiczną (Boolean). Jak się deklaruje (ustawia) zmienne? Deklaracja zmiennej odbywa się przez nadanie jej jednoznacznej nazwy, przez którą jest identyfikowana. Przed nazwą należy wprowadzić instrukcję var (variable – zmienna). Zasady w nazewnictwie zmiennych: nazwa zmiennej musi zaczynać się od litery, lub od znaku podkreślenia [ _ ], w nazwie można używać cyfr, np.: zmienna1, zmienna2 wielkość znaków w nazwie ma znaczenie, (zmienna i ZMIEnna to dwie różne zmienne) nazwa zmiennej nie może być słowem kluczowym np.: function, var, alert, w nazwach zmiennych nie używamy polskich liter np.: ą, ć, ę, nazwa zmiennej nie może zawierać spacji. Skrypt pokazujący jak zachowują się zmienne. var zmienna_a = 3; zmienna_a = true; zmienna_a = "Ala ma kota"; Do czego wykorzystywane są operatory arytmetyczne? Operatory arytmetyczne wykorzystywane są do wykonywania operacji matematycznych na zmiennych (i nie tylko zmiennych). Operator Składnia Opis + x + y Operacja dodawania - X - y Operacja odejmowania - - x Zmienia wartość zmiennej z wartości ujemnej na wartość dodatnią i odwrotnie. Zamiast tego operatora można wykonać -1*x % X % y Zwraca resztę z dzielenia pierwszej zmiennej przez drugą. Dzielenie modulo np.: 4 % 3 = 1 * X * y Wykonuje operację mnożenia / X / y Wykonuje operację dzielenia Skrypt pokazujący działanie operatorów arytmetycznych: var a = 4; var b = 3; = " + a +""); = " + b +""); + b = " +(a + b) +""); – b = " +(a - b) +""); * b = " +(a * b) +""); / b = " +(a / b) +""); % b = " +(a % b) +""); Operator łańcuchowy pozwala na łączenie dwóch ciągów znaków w jeden. Stosuje się w tym celu „+”, przykład: "text1" + "tekst2" //wynik działania text1tekst2 Operatory bitowe związane są z wykonywaniem operacji na bitach. Na odpowiednich bitach zmiennych wykonywane są operacji algebry logicznej. Najpowszechniej chyba spotykanym przypadkiem stosowania wartości bitowych są wszelkiego rodzaju systemy uprawnień. Operator Składnia Opis & X & y Wykonuje operację bitową AND, która zwraca 1 jeśli oba bity wynoszą 1. ^ X ^ y Wykonuje operację bitową XOR, która zwraca 1, jeśli jeden z bitów, ale nie oba jednocześnie, wynosi 1. | X | y Wykonuje operację bitową OR, która zwraca 1, jeśli jeden z bitów wynosi jeden > X >> y Wykonuje przesunięcie bitów w prawo o podaną liczbę usuwając nadmiarowe bity z prawej strony. X >> 1 równoznaczne jest z podzieleniem liczby X przez 2 bez reszty ~ ~x Bitowe NOT. Odwraca bit podanego argumentu. Operatory bitowe traktują swoje argumenty jako zbiory 32 bitów, a nie jak liczby dziesiętne, szesnastkowe, czy ósemkowe. Na przykład binarny zapis liczby dziesiętnej 9 to 1001. Operatory bitowe dokonują swoich operacji na takich właśnie reprezentacjach dwójkowych, ale zwracają standardowe wartości liczbowe JavaScript. Operator Działanie (x = 15; y = 9) & x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 & 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 | x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 ^ x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 > 2 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 >>2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 Operatory przypisania. Symbol Składnia Opis = X = y Przypisuje wartość y do zmiennej Y += X += y Wykonuje przypisanie X = X + y -= X -= y Wykonuje przypisanie X = X - y *= X *= y Wykonuje przypisanie X = X * y /= X /= y Wykonuje przypisanie X = X / y %= X %= y Wykonuje przypisanie X = X % y ^= X ^= y Wykonuje przypisanie X = X ^ y // alternatywa rozłączna bitów (xor) |= X |= y Wykonuje przypisanie X = X | y //suma logiczna bitów (or) &= X &= y Wykonuje przypisanie X = X & y //iloczyn logiczny bitów (and) >= X >>= y Wykonuje przypisanie X = X >> y //przesunięcie bitów w prawo o y >>>= X >>>=y Wykonuje przypisanie X = X >>> y //przesunięcie bitów w prawo o y Operatory inkrementacji i dekrementacji Symbol Składnia Opis ++ X++ Postinkrementacja (zwraca wartość i zwiększa wartość X o 1) ++ ++X Preinkrementacja (zwiększa wartość X o 1 i zwraca wartość) -- X-- Postdekrementacja (zwraca wartość i zmniejsza wartość X o 1) -- --X Predekrementacja (zmniejsza wartość X o 1 i zwraca wartość) Operatory porównania – wykorzystuje się je do porównania dwóch argumentów. W wyniku podawana jest wartość true, jeżeli zależność jest prawdziwa lub wartość false, jeżeli warunek nie został spełniony. Symbol Składnia Opis != X != y Zwraca true, jeżeli zmienne nie są równe X > y Zwraca true, jeżeli X jest większe od y >= X >= y Zwraca true, jeżeli X jest większe lub równe y === X === y Zwraca true, jeżeli X jest równe y i są tego samego typu !== X !== y Zwraca true, jeżeli X jest różne od y albo są różnych typów Operatory logiczne Symbol Składnia Opis ! !x Operator neguje wyrażenie && X && y Operator logiczny AND zwraca true jeżeli oba wyrażenia są prawdziwe || X || y Operator logiczny OR zwraca true, jeżeli przynajmniej jedno wyrażenie jest prawdziwe Instrukcja warunkowa określa, który z fragmentów programu zostanie wykonany w zależności od spełnienia określonych warunków. Ogólna postać instrukcji warunkowej. if (warunek) { instrukcje; } Instrukcja warunkowa z blokiem else if (warunek) { instrukcje; }else{ inne_instrukcje; } Instrukcja przetwarzania warunkowego pozwala na łatwa i szybkie zastąpienie bloku if..else. Można powiedzieć, że stanowi jego skróconą wersję. Jeżeli wynikiem działania warunku jest wartość true, to zostanie wykonana pierwsza instrukcja. Jeżeli warunek nie zostanie spełniony i przyjmie wartość false, zostanie wykonana instrukcja_2 (warunek) ? {instrukcja_1}:{instrukcja_2} Prosty skrypt pokazujący działanie instrukcji przetwarzania warunkowego: var x = prompt("Podaj liczbę", ""); x = (x%2==0) ? "parzysta" : "nieparzysta"; to liczba " + x); Czasem się zdarzy, że trzeba byłoby kilkukrotnie sprawdzać warunek czy zmienna przyjmuje odpowiednią wartość. Na przykład weźmy, że w zależności od wartości zmiennej x będziemy wykonywać inne operacje. Dla instrukcji warunkowej if wyglądałoby to mniej więcej tak: if (x==0){ instrukcja_1; } if (x==1){ instrukcja_2; } if (x==2){ instrukcja_3; } Jak sami widzicie nie wygląda to zbyt elegancko. Z pomocą przychodzi nam konstrukcja switch. Powyższe instrukcje if można zamienić na: switch (x){ case 0 : instrukcja_1;break; case 1 : instrukcja_2;break; case 2 : instrukcja_3; } W konstrukcji switch można dopisać blok default. Wykonuje się on wtedy, kiedy żaden warunek nie jest spełniony: switch (x){ case 0 : instrukcja_1;break; case 1 : instrukcja_2;break; case 2 : instrukcja_3;break; default: instrukcja_4; } Instrukcja break odpowiedzialna jest za wyjście z konstrukcji switch po znalezieniu opcji. Jeżeli nie byłoby break instrukcje następujące po znalezionej opcji wykonałyby się jedna po drugiej. Na ostatniej opcji nie jest wymagana instrukcja break. Czasem zachodzi potrzeba, żeby sprawdzić warunek w sekcji else. Robi się to poprzez konstrukcję if (x){ instrukcja_1; } else if(y>0){ instrukcja_2; } Pętla for jest chyba najczęściej stosowaną pętlą w JS. Składnia pętli for: for(inicjalizacja; warunek_wyjścia; wyrażenie_modyfikujące){ wykowywane intrukcje; } Opis poszczególnych elementów: inicjalizacja – instrukcja wykonywana tylko raz na samym początku pętli. Zwykle używa się jej do przypisania wartości początkowej do zmiennej, która np. będzie zwiększana po każdym obiegu pętli. Zmienna taka zwykle nazywana jest licznikiem pętli warunek_wyjścia – dowolny warunek, który będzie sprawdzany przed każdym obiegiem pętli, także tym pierwszym. W momencie, gdy warunek zwróci false wykonywanie pętli zostanie przerwane, wyrażenie_modyfikujące – instrukcja, która będzie wykonywana po każdym obiegu pętli. Zwykle jej zadaniem jest zwiększenie wartości zmiennej pełniącej rolę licznika pętli. Przykład pętli for, która wypisze kolejne cyfry od 0 do 9 for (i = 0; i var x = 1; while (x Oczywiście w pętli tej można również użyć instrukcji break i continue. Zasada działania tych instrukcji jest taka sama jak w pętli for. Zadania do wykonania Wypisać wszystkie dzielniki liczby 912 używając pętli while. Policzyć sumę wszystkich liczb od 1 do 100 używając pętli while. 12. Pętla do ... while 13. Funkcje 15. Obiekty wbudowane 16. Własne obiekty
Liczby parzyste i nieparzyste za pomocą pętli w PHP. Sprawdzenie w pętli, czy dana liczba jest parzysta, czy nie parzysta jest częstym zadaniem web developera. Zwykle potrzebujemy takiego kodu do zrobienia np. zebry w tabeli za pomocą dodania co drugi element różnej klasy. Można wykonać to za pomocą CSS, ale dodanie klasy w HTML daje
2,4,6,8,10, //sumacyfr = 2112,14,16,18,20, //suma cyfr = 21 + 5 = 21 + 1 * 522,24,26,28,30, //suma cyfr = 21 + 5 + 5 = 21 + 2*5...92,94,96,98,100 //suma cyfr = 21 + 5 * 9 - 9suma cyfr = 21 * 10 + 5 * (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9) - 9 == 210 + 5 * 45 - 9 = 210 + 225 - 9 = 435 - 9 = 426drugi sposob:ta liczba to:2468 1012141618 2022242628 30 ... 9092949698 100przy czym wstawilem przerwy miedzy grupami 2-8, 10-18, 20-28 itdzatem wystepuja tam cyfry:2,4,6,8 - wystepuja w kazdej z dziesieciu 10 grup, jako cyfry jednostek1, 2, 3, 4, 5, 6, 7, 8, 9 - po 5 w kazgej grupie jako cyfry dziesiateki ostatecznie 1+0+0 z setki na koncu, czyli:10 * (2+4+6+8) + 5 * (1+2+3+4+5+6+7+8+9) + 1 = 10 * 20 + 5 * 45 + 1 = 200 + 225 + 1 = 426
KURS JĘZYKOWY http://link.learning-sentences.com/YlzTLe (*)PLAYLISTA https://www.youtube.com/playlist?list=PLYvfV8v9zwihfQoG5B2lD8UcOUxqQAxYkSTRONA INTER
Rzeczywiście to mój błąd, nie wiem dlaczego zapisałem tam i == a I nie może tam być i < a, bo w tedy musiałbyś przypisać do zmiennej i zero, a chyba nie chcesz sprawdzać czy 0 jest liczbą parzystą. Nie wiem jaki masz komunikat o błędzie, ale kod pętli będzie wyglądał tak for (var i = 1; i < 13; i++) { if (i%2 == 0) ' + i + ' jest parzysta'); else ' + i + ' jest nieparzysta'); }
while(liczba != 0){ W podanym przez Ciebie kodzie, pętla while wykonywana jest tylko gdy podana liczba wynosi 0. Jak rozumiem po dekrementacji mają zostać wyświetlone wszytkie liczby od podanej w dół, bez zera. "Ładniejszy" kod otrzymasz gdy zamiast liczba=liczba-1; napiszesz liczba--; (dwa minusy). Taki bardziej 'pro' będzie ;)
Array w języku JavaScript jest globalnym obiektem, który jest używany podczas tworzenia tablic – listo-podobnych obieków wysokiego poziomu. Stwórz tablicę var owoce = ['Jabłko', 'Banan']; // 2 Dostawanie się do elementu tablicy var pierwszy = owoce[0]; // Jablko var ostatni = owoce[ - 1]; // Banan Pętla przechodząca przez zawartość tablicy index, array) { index); }); // Jablko 0 // Banan 1 Dodawanie elementu na końcu tablicy var nowaDługosc = // ["Jabłko", "Banan", "Pomarańcz"] Usuwanie elemetu z końca tablicy var ostatni = // usuwa pomarańczę z końca // ["Jabłko", "Banan"]; Usuwanie elementu z przodu tablicy var pierwszy = // usuwa jabłko z początku // ["Banan"]; Dodawanie elementu z przodu tablicy var nowaDługość = // dodaje na początku // ["Truskawkę", "Banan"]; Znajdowanie indeksu (numeru porządkowego) elementu t tablicy // ["Truskawka", "Banan", "Mango"] var pos = // 1 Usuwanie obiektu przy użyciu indeksu var usunElement = 1); // tak się usuwa element // ["Truskawka", "Mango"] Usuwanie elementów przy użyciu pozycji w indeksie var warzywa = ["Kapusta", "Rzepa", "Rzodkiew", "Marchew"]; // ["Kapusta", "Rzepa", "Rzodkiew", "Marchew"] var pos = 1, n = 2; var usunieteElementy = n); // n oznacza liczbę elementów do usunięcia // zaczynając od elementu na określonej pozycji(pos) // ["Kapusta", "Marchew"] (początkowa tablica została zmieniona) // ["Rzepa", "Rzodkiew"] Kopiowanie tablicy var płytkaKopia = // tak się tworzy kopię // ["Truskawka", "Mango"] Składnia:[element0, element1, ..., elementN] new Array(element0, element1[, ...[, elementN]]) new Array(długoscTablicy) elementN Lista wartości elementów tablicy. Tablica jest inicjowana z określonymi wartościami jako jej elementami. Długość tablicy (length) odpowiada liczbie jej elementów. długośćTablicy Początkowa długość tablicy. Aby móc przetwarzać wartości używamy własności długości tablicy length. Jeśli określona wartość nie jest liczbą, zostanie utworzona tablica jednoelementowa, a jej pierwszy element będzie posiadał ową wartość. Maksymalna długość tablicy wynosi 4,294,967,295 elementów. OpisTablica jest uporządkowanym zbiorem wartości przyporządkowanych ustalonej pojedynczej zmiennej. Poniższy przykład tworzy obiekt Array przy użyciu literału tablicy. Tablica kawa zawiera trzy elementy i ma długość (length) równą 3: kawa = ["mocca", "cappucino", "zbożowa"] Można utworzyć tzw. zwartą tablicę składającą się z dwóch lub więcej elementów, o początkowym indeksie 0, jeśli poda się początkowe wartości wszystkich elementów. Zwarta tablica to taka, w której każdy element posiada wartość. Poniższy kod tworzy zwartą tablicę o trzech elementach: myArray = new Array("Hello", myVar, Dostęp do elementów tablicyDo elementów tablicy odwołujemy się po ich liczbie porządkowej (zaczynając od zera). Przykładowo, jeśli mamy zdefiniowaną tablicę: mojaTablica = new Array("Wiatr","Deszcz","Ogień") Do pierwszego elementu odwołujemy się poprzez mojaTablica[0], a do drugiego poprzez mojaTablica[1].Podawanie pojedynczego parametruJeśli konstruktor Array zostanie wywołany z pojedynczym parametrem liczbowym, parametr ten zostanie uznany za początkową długość tablicy. Poniższy kod tworzy tablicę pięciu elementów: rodzajPlatnosci = new Array(5) Zachowanie konstruktora Array zależy od tego, czy jedyny parametr jest liczbą. Jeśli jedyny parametr jest liczbą, konstruktor konwertuje tę liczbą do 32-bitowej liczby całkowitej bez znaku i tworzy tablicę o długości (liczbie elementów, length) równej tej liczbie. Tablica początkowo nie zawiera żadnych elementów, mimo że ma niezerową długość. Jeśli parametr ten nie jest liczbą, tworzona jest tablica o długości 1, a parametr ten staje się jej pierwszym elementem. Poniższy kod tworzy tablicę o długości 25, a następnie przypisuje wartości pierwszym trzem elementom: rodzajeMuzyki = new Array(25) rodzajeMuzyki[0] = "R&B" rodzajeMuzyki[1] = "Blues" rodzajeMuzyki[2] = "Jazz" Pośrednie zwiększanie długości tablicyDługość tablicy wzrasta samoczynnie, jeśli elementowi o indeksie wyższym niż obecna długość zostanie przypisana wartość. Poniższy kod tworzy tablicę o zerowej długości, a następnie przypisuje do niej 99. element. W wyniku długość tablicy zostaje zmieniona na 100. kolory = new Array(); kolory[99] = "ciemnoniebieski"; Tworzenie tablicy z wyników wyrażenia regularnegoWynik porównania pomiędzy regularnym wyrażeniem a łańcuchem znaków może utworzyć tablicę. Ta tablica ma własności i elementy, które przekazują informacje dotyczące porównania. Tablica jest wartością zwracaną przez i Aby zrozumieć te własności spójrz na poniższy przykład odwołując się do poniższej tabeli: //Porównuje łańcuch znaków złożony z jednego 'd' następnie kilku 'b' a następnie jednego 'd' //Zapamiętuje porównane 'b' i następujące 'd' //Ignoruje wielkość liter mojRe=/d(b+)(d)/i; mojaTablica = Własności i elementy zwracają wartości z poniższej tabeli: Własności Odzwierciedla ilość elementów tablicy. Pozwala na dodawanie własności do wszystkich obiektów. Metody Experimental Tworzy nową instancję Array z obiektu podobnego do tablicy lub iterowalnego. Zwraca true, jeśli zmienna jest tablicą, jeśli nie false. Experimental Asynchronicznie obserwuje zmiany w tablicach, podobnie jak () dla obiektów. Zapewnia strumień zmian w kolejności występowania. Experimental Tworzy nową instancję Array ze zmienną liczbą argumentów, niezależnie od liczby lub rodzaju argumentów. PrzykładyPrzykład: Tworzenie tablicyPoniższy kod tworzy tablicę msgArray o długości 0, a następnie przypisuje wartości do msgArray[0] i msgArray[99], zwiększając długość tablicy do 100. msgArray = new Array() msgArray[0] = "Witaj," msgArray[99] = "świecie" // Poniższy warunek jest spełniony, // ponieważ zdefiniowano element msgArray[99]. if ( == 100) myVar="Długość tablicy jest równa 100." Przykład: Tworzenie tablicy dwuwymiarowejPoniższy kod tworzy tablicę dwuwymiarową i przypisuje wyniki do zmiennej myVar. myVar="Test tablicy wielowymiarowej; " a = new Array(4) for (i=0; i < 4; i++) { a[i] = new Array(4) for (j=0; j < 4; j++) { a[i][j] = "["+i+","+j+"]" } } for (i=0; i < 4; i++) { str = "Wiersz "+i+":" for (j=0; j < 4; j++) { str += a[i][j] } myVar += str +"; " } Poniższy łańcuch znaków będzie przypisany do zmiennej myVar (linie zostały przełamane dla zwiększenia czytelności): Test tablicy wielowymiarowej; Wiersz 0:[0,0][0,1][0,2][0,3]; Wiersz 1:[1,0][1,1][1,2][1,3]; Wiersz 2:[2,0][2,1][2,2][2,3]; Wiersz 3:[3,0][3,1][3,2][3,3];

Stereometria.1.Tworząca stożka o długosci 10cm jest nachylona do płaszczyzny podstawy pod kątem 30 stopni. Oblicz objętosc i pole powierzchni calkowitej tego stozka.2. Wysokosc ostrosłupa prawidłowego trojkątnego ejst równa 6, a kat nachylenia krawedzi bocznej do plaszyczny podstawy wynosi 60 stopni.Oblicz wykosc podstawy tego

StringiW pierwszym przypadku zwróć uwagę na zastosowanie pojedynczych cudzysłowów, aby w środku umieścić jest "ona"?'); // Kim jest "ona"?W drugim przypadku nie użyliśmy tej sztuczki, więc podwójny cudzysłów w środku kończy stringa, a następnie otwiera nowy. Na szczęście w środku znajduje się znak +, który łączy dwa teksty w jeden. Zauważ podwójną spację pomiędzy "Użyję" a "by" w wyświetlonym "+" by dodać teksty"); // Użyję by dodać tekstyJeśli chcielibyśmy wypisać "+", to powinniśmy otoczyć cały tekst cudzysłowami "+" by dodać teksty'); // Użyję "+" by dodać tekstyW ostatnim przypadku popełniliśmy typowy błąd nowicjusza i zapomnieliśmy o użyciu spacji, gdy dodajemy dwa + "następny," + "jeszcze jeden"); // Tekst,następny,jeszcze jedenTo, co powinniśmy zrobić, to dodać tę spację albo w tekście po lewej, albo po prawej od znaku " + "następny, " + "jeszcze jeden"); // Tekst, następny, jeszcze jeden + " następny," + " jeszcze jeden"); // Tekst, następny, jeszcze jedenJavaScript jako * 2 + 3 * 4 + 5 * 6 + 7 * 8 + 9); // 109 * (2 + 3) * (4 + 5) * (6 + 7) * (8 + 9)); // 9945 // Różni się od poprzedniego, bo nawiasy wymuszają // dodawanie przed mnożeniem. * 2 / 3 * 4 / 5 * 6 / 7 * 8 / 9 * 10); // // musiało być większe od 1, bo ostatnie jest mnożenie. ** 10); // 1024 // to bardzo znana liczba w programowaniu // "kilo" w kontekście informatyki oznacza zwykle 1024, // w czasie gdy w innych kontekstach oznacza jako kalkulator porównującyW pierwszym przypadku mnożenie kończy się na 5, a więc możemy spodziewać się, że prawa strona jest większa. Poniższy kod to * 2 + 3 * 4 + 5 3 ** 15); // false, więc prawa strona jest większa ** 15 > 10 ** 4); // true, więc lewa strona jest większaMożemy też sprawdzić na ** 20 = 5; i--) { }Wypisz kolejne liczby od 5 do 30, z pominięciem (let i = 5; i = 0; i -= 2) { }Funkcjefunction printSum(a, b) { + b); } function printNumbers(a, b) { for (let i = a; i = b && a >= c) { return a; } else if (b >= c) { return b; } else { return c; } }JavaScript jako kalkulator ** 2 * // * 30 + 40)); // -5))); // // albo ** -5)); // 7))); // 2187 // albo ** 7)); // 2187Funkcje jako wartościspeak(cheerKids) — Hej, dzieci oraz Mowa...speak(cheerAll) — Hej, dzieci, Witam rodziców a potem Mowa...speak(cheerAll, bless) — Hej, dzieci, Witam rodziców, Mowa... i wreszcie Zdrowia!speak(bless) — Zdrowia! a potem Mowa...speak(undefined, bless) — Mowa... a potem Zdrowia!Obiektyconst user = { name: "Kuba", surname: "Wędrowycz", address: { country: "Polska", city: "Stary Majdan", postal: "22-120", street: null } }; const book = { title: "Karpie Bijem", releaseYear: 2019 }; // Użycie // Wędrowycz = "Jakub"; // Stary Majdan = "Bagnowska"; // 2019releaseYear nie powinien być oddzielony na osobny obiekt release, ponieważ nie ma to sensu, gdy nie interesuje nas nic więcej na temat tego wydania. Moglibyśmy tak zrobić, gdyby było (albo gdybyśmy się spodziewali, że będzie) więcej danych na temat wypuszczenia tej książki, na przykład releaseStatus czy z obiektamilet obj = {}; const obj2 = obj; = "Alek"; // Alek // Alek const obj3 = { name: }; // {name: "Alek"} obj = { size: "S" }; // undefined // S // AlekJSONPrzykładowa odpowiedź mogłaby wyglądać tak:{ "name": "Air Max 720", "brand": "Nike", "description": "Mają największą...", "size": 45, "imageUrl": " "price": { "value": " "currency": "PLN" } }Konto bankowefunction makeBankAccount() { return { balance: 0, deposit: function(amount) { += amount; return }, withdraw: function(amount) { if(amount > { amount = } -= amount; return amount; }, currentBalance: function() { return } } }function makeBankAccount() { return { balance: 0, deposit: function(amount) { += amount; return }, withdraw: function(amount) { amount = -= amount; return amount; }, currentBalance: function() { return } } }Konto bankowe z operatorem newfunction BankAccount() { = 0; = function(amount) { += amount; return }; = function(amount) { amount = -= amount; return amount; }; = function() { return }; }Konto bankowe przez definicję klasyclass BankAccount { constructor() { = 0; } deposit(amount) { += amount; return } withdraw(amount) { amount = -= amount; return amount; } currentBalance() { return } }Tworzenie i modyfikacja tablicconst values = [true, 42, "AAA"]; // "AAA" // 42 // [true, 88] const pets = ["dog", "cat"]; // ["dog", "pig"] const pet = // ["dog"] // "pig"Wielkość i elementy tablicyconst letters = ['A', 'B', 'C', 'D', 'E', 'F']; // 6 // E const numbers = [5, 6, 7, 8, 9, 10, 11, 12]; // 8 // 8forEachfunction printAllValues(values) { (value, index) { pozycji " + index + ' znajduje się "' + value + '"'); }); } function sumAll(numbers) { let sum = 0; (number) { sum += number; }); return sum; }mapfunction toFullNames(users) { return (user) { if( { return + " " + + " " + } else { return + " " + } }); }Funkcje strzałkowe przy przetwarzaniu kolekcjiconst list = students .filter(s => >= .filter(s => >= 20) .map(s => + ", " + .forEach(str => filtr można zamienić na pojedynczy, a mapowanie przed forEach jest niepotrzebnym list = students .filter(s => >= && >= 20) .forEach(s => + ", " + strzałkowe zamiast metodconst times = (a, b) => a * b; const compareScoresDescending = (s1, s2) => — const compareNames = (s1, s2) => { if( return 1; return 0; };Z funkcji strzałkowych do anonimowych i nazwanych// 1. Funkcje anonimowe const triple = function(i) { return i * 3; }; const first = function(arr) { return arr[0]; }; const bigger = function(a, b) { return a > b ? a : b; };// 2. Funkcje nazwane function triple(i) { return i * 3; } function first(arr) { return arr[0]; } function bigger(a, b) { return a > b ? a : b; }
Na ekranie należy kolejno policzyć kreski od 1 do 100.Google play: https://play.google.com/store/apps/details?id=com.pmqsoftware.math.numberspl Ta lekcja dostępna jest także w formie filmu. Pętle w programowaniu są wykorzystywane niemal w każdym programie. Jest to jedna z podstawowych konstrukcji wykorzystywana we wszystkich językach programowania. Pozwalają one wykonywać określoną czynność wielokrotnie na przykład, gdy musimy wyświetlić 10 razy prawie to samo. Poznamy tutaj pętle, które pozwalają powtarzać jakąś czynność niewiadomą ilość razy oraz takie, które z góry zakładają pewną liczbę wykonań. Pętla while Pętlę while najczęściej wykorzystuje się w miejscach, gdzie zakładana ilość powtórzeń jest bliżej nieokreślona, ale znamy warunek jaki musi być spełniony. Jej schematyczną postać przedstawiono poniżej: while(warunek){ instrukcje do wykonania } Gdy warunek jest spełniony instrukcja we wnętrzu pętli jest wykonywana. Jeżeli natomiast warunek jest fałszywy może się ona nie wykonać, ani razu. Zazwyczaj stosuje się jakąś zmienną liczbową, a następnie dzięki inkrementacji, lub dekrementacji zmienia do momentu, aż warunek stanie się fałszywy. Podobnie jak przy instrukcji warunkowej if można pominąć nawiasy klamrowe w wypadku, gdy w ciele pętli znajduje się tylko jedna metoda, lub dowolna instrukcja. Dobrze jest sobie zapamiętać ją jako: "dopóki warunek jest spełniony to wykonuj instrukcje". Zobaczmy jej działanie na praktycznym przykładzie: public class Odczyt{ public static void main(String[] args){ int licznik = 0; while(licznik<10){ jest petla"); licznik++; } pętli"); } } Zadeklarowaliśmy zmienną licznik i przypisaliśmy jej 0. Sprawdzamy warunek, czy jest ona mniejsza od 10 - faktycznie jest więc wykonujemy instrukcje w jej wnętrzu. Wyświetlamy tekst "To jest pętla" i zwiększamy licznik o 1. Następnie znowu sprawdzany jest warunek, czy 1<10, ponownie tak, więc powtarzamy poprzednie czynności. Gdy licznik osiąga wartość 10 warunek jest fałszywy, ponieważ 10 nie jest mniejsze od 10. Pętla jest przerywana i wyświetlany jest tekst "Koniec pętli". Pętla do while Różni się ona od pętli while przede wszystkim tym, że to co znajduje się w jej wnętrzu wykona się przynajmniej raz, ponieważ warunek jest sprawdzany dopiero w drugiej kolejności. Schematyczna budowa przedstawia się o tak: do{ instrukcje do wykonania } while(warunek); Zwróć uwagę na kończący wyrażenie średnik, który przy pętli while nie występuje. instrukcje do wykonania są egzekwowane przynajmniej raz, a dopiero później sprawdzamy warunek, gdy jest on prawdziwy, instrukcje są powtarzane. Tą pętlę można zapamiętać następująco "wykonuj instrukcje dopóki warunek jest prawdziwy" - widzimy tutaj tylko zamianę słów, ale mają one kluczowe znaczenie. Wcześniejszy przykład z użyciem pętli do...while wyglądałby tak: public class Odczyt{ public static void main(String[] args){ int licznik = 0; do{ jest petla"); licznik++; } while(licznik<10); pętli"); } } Przebieg działania jest prawie taki sam, tylko, że gdyby przykładowo licznik był zainicjowany liczbą 20, to mimo wszystko wyświetliłby się raz napis "To jest pętla". W naszym przypadku napis wyświetla się 10 razy. Pętla for Pętlę for od dwóch poprzednich odróżnia przede wszystkim rodzaj zastosowań. W jej przypadku zazwyczaj wiemy dokładnie ile razy ma się jakaś czynność powtórzyć. Jej schemat to: for(wyrażenie początkowe ; warunek ; modyfikator_licznika){ instrukcje do wykonania } Wyrażenie początkowe służy do zainicjowania jakiegoś licznika, którym zazwyczaj jest w tym samym miejscu zadeklarowana zmienna typu całkowitego - najczęściej oznacza się je przy pomocy liter od "i" wzwyż, jest to przydatne przy zagnieżdżonych pętlach, gdzie przy długich nazwach ciężko by się było połapać. Warunek sprawdza, czy ma się wykonać instrukcja z wnętrza pętli, natomiast modyfikator zmienia licznik - zazwyczaj jest to instrukcja inkrementacji. Wcześniejszy przykład z wykorzystaniem pętli for wyglądałby więc tak: public class Odczyt{ public static void main(String[] args){ for(int i=0; i<10; i++){ jest pętla"); } pętli"); } } Jak widać nie musieliśmy tutaj deklarować zmiennej globalnej, a zapis jest bardziej zwięzły. Działanie jest dokładnie takie samo jak w przypadku pętli while. Pętla foreach Istnieje również pętla foreach która pozwala na iterację po wszystkich elementach tablicy lub kolekcji. Opis tej pętli znajdziesz pod w artylkule o pętli foreach.
1. Napisz program, który wypisze liczby wylosowane z przedziału od 0 do 20 aż do momentu pojawienia się liczby 2 po raz trzeci. 2. Napisz program, który dla ciągu n liczb wylosowanych wyznaczy średnią arytmetyczną (liczby z przedziału od 0 do 10). 3. Napisz program, który wyświetli n kolejnych potęg naturalnych liczby 2. 4.
2. Napisz program, który wyświetla liczby parzyste z zakresu od 2 do 100. Zmodyfikuj program w taki sposób aby program pytał z jakiego zakresu ma wyświetlać liczby i potem je wyświetlił. 3. Napisz jaka jest różnica pomiędzy funkcją for i while oraz pomiędzy while i do-while. 4. Napisz zadanie w którym użytkownik podaje dwie liczby. OcoSa.