Sito Eratostenesa w C++ przesiew liczb do i większych

Wielkość: px
Rozpocząć pokaz od strony:

Download "Sito Eratostenesa w C++ przesiew liczb do 10 16 i większych"

Transkrypt

1 Sito Eratostenesa w C++ przesiew liczb do i większych Ogólnie o sicie Eratostenesa Algorytm, opracowany przez Eratostenesa, służy do wyszukiwania liczb pierwszych (liczb mających dokładnie dwa dzielniki). Najbardziej naturalna metoda określania, czy liczba jest pierwsza, polega na sprawdzeniu jej podzielności przez wszystkie liczby naturalne mniejsze od niej. Eratostenes zauważył, że można ograniczyć ilość dzielników. Doszedł on do wniosku, że mając daną liczbę naturalną N, w celu wyznaczenia wszystkich liczby pierwszych mniejszych od N, należy znaleźć największą liczbę pierwszą która spełni warunek p 2 <=N (gdzie p liczba pierwsza), a wszystkie większe od niej sprawdzić pod względem podzielności przez liczby pierwsze mniejsze lub równe p. Przykładowo dla N=100: p=7 (bo 7 2 =49, a 11 2 =121) Liczby pierwsze mniejsze od p: p 1 =2 p 2 =3 p 3 =5 Sprawdzamy liczby od 8 do 100. Jeśli dzielenie daje resztę inną niż 0, dla każdej z powyższych liczb pierwszych, użytych w postaci dzielników, liczba jest pierwsza. Dodatkowo ze zbioru otrzymanych liczb należy odrzucić 1, która ma tylko jeden dzielnik. Łatwo zauważyć, że największa z liczb pierwszych, uzyskanych w wyniku tych działań, spełnia warunek p najwyższa 2 <=N 2. Oznacza to, że dysponując wynikami wcześniejszych obliczeń, możemy znaleźć nieskończenie wiele liczb pierwszych. Adaptacja algorytmu do kodu źródłowego Zapiszmy powyższy przykład w postaci kodu źródłowego w języku C. Kod prezentuje jedno z najprostszych możliwych rozwiązań ŹRÓDŁO #include<stdio.h>//dodajemy bibliotekę we-wy 2. main() 3. { 4. int liczp[99];//tablica dla odnajdywanych liczb pierwszych 5. int illiczb,nilliczb;//zmienne zliczające ilość liczb na tablicy liczp[] 6. int liczba;//zmienna przechowująca sprawdzaną liczbę 7. liczp[1]=2;//wpisujemy na początkowe pozycje tablicy liczby pierwsze 8. liczp[2]=3;//dla N= liczp[3]=5; 10. liczp[4]=7; 11. illiczb=4;//wpisujemy do zmiennej aktualną ilość liczb na taśmie 12. nilliczb=illiczb; 13. for(liczba=8; liczba<=100; liczba++){ 14. if((liczba%liczp[1]!=0) && (liczba%liczp[2]!=0) && (liczba%liczp[3]!=0) && (liczba%liczp[4]!=0)){ 15. nilliczb++; 16. liczp[nilliczb]=liczba;//jeśli sprawdzana liczba nie jest podzielna //przez wprowadzone początkowo na tablicę 1

2 17. } 18. } //liczby pierwsze to zapisujemy ja na tablicy //i zwiększamy zmienną nilliczb; zmienna //illiczb (liczba dzielników) nie zmienia się 19. for(int i=1; i<=nilliczb; i++){ 20. printf("%i) %i\n",i,liczp[i]);//po skończeniu przesiewu wyświetlamy //zawartość tablicy 21. } 22. getchar(); 23. } Liczby pierwsze zapisywane są na tablicy liczp. W liniach 7-12 wpisujemy na wspomnianą tablicę liczby spełniające warunek p 2 <=N (dla N=100) oraz określamy ilość liczb zgromadzonych na tablicy przy pomocy zmiennej illiczb, a także przypisujemy tą wartość zmiennej nilliczb, która będzie zliczała ilość liczb pierwszych w czasie ich odnajdywania. Linia 14 odpowiada za sprawdzanie liczby pod względem podzielności przez, umieszczone w liniach 7-12, liczby na tablicy. Zakres sprawdzanych liczb określamy pętlą for w linii 13. Na koniec (linie 19-21) wypisujemy zgromadzone na tablicy liczby. Optymalizacja kodu wstęp do przeszukiwania kolejnych zakresów Zmodyfikujmy powyższy kod tak, aby mógł służyć do sprawdzania liczb większych od 100 na podstawie wyników wcześniejszych zakresów. Zacznijmy od linii 14. Dla N=100 mamy tylko cztery dzielniki, więc możemy pozwolić sobie na wypisanie każdego warunku oddzielnie. Ilość dzielników wzrasta jednak po sprawdzeniu każdego kolejnego zakresu. Musimy więc zmodyfikować ten fragment. Dzięki zmiennym illiczb i nilliczb wiemy ile jest liczb na tablicy. Możemy zastosować pętle for dla dzielenia przez kolejne liczby pierwsze. Spowoduje to jednak, że wykonywane będzie dzielenie zawsze tyle razy ile liczb mamy na tablicy, pomimo tego, że sprawdzana liczba okaże się podzielna przez którąś z nich. Jeśli dzielenie przez 3 lub 5 da resztę 0 to dalsze dzielenie nie jest uzasadnione. Zastosujmy więc pętle while. Dodajmy zmienną flaga która będzie regulowała działanie pętli. Określmy, że pętla będzie wykonywana gdy flaga!=0. Wartość 0 należy w tej sytuacji przypisać zmiennej flaga, gdy: - w wyniku dzielenia otrzymamy resztę 0; - wykonamy dzielenie tyle razy, ile liczb mieliśmy na tablicy przed rozpoczęciem przesiewu; Aby umożliwić sprawdzanie drugiego z powyższych warunków wprowadźmy zmienną j, która będzie zliczała wykonania pętli. Sprawdzana liczba będzie pierwsza, jeśli wykonamy pętle tyle razy ile mamy na tablicy liczb i nie otrzymamy reszty 0 w ostatnim dzieleniu. Wprowadźmy zmienną flagapoz, której zadaniem będzie zliczanie powtórzeń pętli, w których osiągnęliśmy resztę inną niż 0. Ostatecznie otrzymujemy: ŹRÓDŁO flaga=1;//zmienna warunkująca wykonywanie pętli while 2. flagapoz=0;//zmienna zliczająca ilość dzieleń z resztą inną niż 0 3. j=0;//licznik wykonania pętli while 4. while(flaga!=0) 5. { 6. j++; 7. if(j>illiczb liczba%liczp[j]==0){ 8. flaga=0;//jeśli wykonaliśmy dzielenie dla wszystkich liczb pierwszych 2

3 //z poprzedniego zakresu lub otrzymaliśmy resztę równą 0 //kończymy działanie pętli 9. } 10. else{ 11. flagapoz++;//jeśli nie zwiększamy zmienną flagapoz 12. } 13. } 14. if(flagapoz==illiczb){ 15. nilliczb++;//jeśli wartości zmiennych flagapoz i illiczb są takie same //oznacza to że podczas dzielenia ani razu nie otrzymaliśmy //reszty 0, co wskazuje iż liczba jest pierwsza 16. liczp[nilliczb]=liczba;//więc zapisujemy ją na tablicy 17. } 18. } Zmieńmy teraz 13 linie Źródła 1, aby wykluczyć sprawdzanie liczb parzystych, a tym samym zmniejszyć ilość powtórzeń pętli o połowę. Wystarczy zmienną, operującą pętlą, zwiększać o 2 przy każdym przejściu pętli. Musimy przy tym zacząć od liczby nieparzystej ŹRÓDŁO for(liczba=9; liczba<=100; liczba+=2){ Dodajmy jeszcze funkcję pauza, która zatrzyma działanie programu po wyświetleniu każdych 23 linii wyników i umożliwi wyświetlenia kolejnych wyników lub wyjście z programu. Funkcja ma postać: ŹRÓDŁO void pauza() 2. { 3. char znak; 4. if(ilwierszy==24){ 5. printf("[enter] - następna strona wyników; [k] - koniec programu"); 6. if((znak=getchar())!='k'){ 7. clrscr(); 8. ilwierszy=0; 9. } 10. else{ 11. exit(0); 12. } 13. } 14. } Odwołanie do funkcji umieśćmy po wypisaniu na ekranie znalezionej liczby pierwszej. Funkcja wykorzystuje zmienną globalną ilwierszy, która powiększa swoją wartość o jeden po każdym wypisaniu wyniku. Otwieranie wyższych zakresów Podzielmy zgromadzony kod na funkcje. Zmienne ze Źródła 1 określmy jako globalne. Linie 7-11 z tego samego źródła umieśćmy w funkcji init. Z pozostałej części kodu stwórzmy funkcję szukaj i przenieśmy zmienne flaga, flagapoz oraz j do tej funkcji w postaci zmiennych lokalnych. Dołączmy jeszcze bibliotekę conio.h i zastosujmy funkcję clrscr() w procedurze init. Dodajmy jeszcze zmienne minz i maxz, którymi będziemy regulować prace pętli for w funkcji szukaj. Do całości dołączmy funkcje pauza. 3

4 Na koniec zmodyfikujmy sposób wyświetlania wyników. Usuńmy pętle z linii Źródła 1, która wypisywała zawartość tablicy liczp po wyszukiwaniu liczb. Zamiast niej dodajmy printf("%i\n",liczba); po kodzie dodającym kolejną liczbę do tablicy, oraz w funkcji init kod wypisujący liczby wpisane na tablice w tejże funkcji. Ostatecznie otrzymujemy: ŹRÓDŁO #include<stdio.h> 2. #include<stdlib.h> 3. #include<conio.h>//dołączamy potrzebne biblioteki 4. long int liczp[ ];//zwiększamy rozmiar i zakres tablicy 5. long int illiczb,nilliczb; 6. long int liczba; 7. long int minz, maxz;//dodajemy zmienne minz i maxz do obsługi pętli for //w funkcji szukaj 8. short int ilwierszy;//dodajemy zmienną ilwierszy dla funkcji pauza 9. void init(){ 10. clrscr(); 11. liczp[1]=2; 12. liczp[2]=3; 13. liczp[3]=5; 14. liczp[4]=7; 15. illiczb=4; 16. nilliczb=illiczb; 17. printf("%i\n%i\n%i\n%i\n",liczp[1],liczp[2],liczp[3],liczp[4]); 18. ilwierszy=4;//wpisujemy na tablicę początkowe liczby pierwsze dla //N=100 i wypisujemy je na ekranie 19. } 20. void pauza() 21. { 22. char znak; 23. if(ilwierszy==23){ 24. printf("[enter] - następna strona wyników; [k] - koniec programu"); 25. if((znak=getchar())!='k'){ 26. clrscr(); 27. ilwierszy=0; 28. } 29. else{ 30. exit(0); 31. } 32. } 33. } 34. void szukaj() 35. { 36. short int flaga; 37. long int flagapoz, j; 38. illiczb=nilliczb; 39. for(liczba=minz; liczba<=maxz; liczba+=2) 40. { 41. flaga=1; 42. flagapoz=0; 43. j=0; 4

5 44. while(flaga!=0) 45. { 46. j++; 47. if(j>illiczb liczba%liczp[j]==0){ 48. flaga=0; 49. } 50. else{ 51. flagapoz++; 52. } 53. } 54. if(flagapoz==illiczb){ 55. nilliczb++; 56. liczp[nilliczb]=liczba; 57. printf("%i\n",liczba);//jeśli liczba jest pierwsza to ją wypisujemy 58. ilwierszy++;//zwiększamy zmienną przechowującą ilość wykorzystanych //wierszy na ekranie 59. pauza();//i odwołujemy się do funkcji pauza 60. } 61. } 62. } 63. main() 64. { 65. init(); 66. minz=9; 67. maxz=100; 68. szukaj(); 69. minz=101; 70. maxz=10000; 71. szukaj(); 72. minz=10001; 73. maxz= ; 74. szukaj(); 75. getchar(); 76. } W liniach określamy ramy zakresów (zmienne minz i maxz) i wywołujemy funkcję szukaj, która sprawdza liczby z kolejnych zakresów na podstawie zgromadzonych wcześniej na tablicy danych. Powyższy kod wyszukuje liczby pierwsze mniejsze od Kolejny zakres obejmowałby liczby od do 10 16, jednak próba sprawdzenia tak dużych liczb powoduje pojawienie się nowych problemów. Jeszcze wyższe zakresy Część liczb ze zbioru od do wykracza poza zakres zmiennej liczba w której są przechowywane sprawdzane wartości. Nie będzie więc możliwe wykonywanie obliczeń ani operowanie pętlą for w procedurze szukaj. Wykorzystajmy nową zmienną do operowania tą pętlą. Dodajmy też drugą pętlę for. Ujmując schematycznie uzyskamy: ŹRÓDŁO for(int X=1; X<= ; X++){ 2. for(int Y=1; Y<= ; Y++){ 3. //komendy 4. } 5. } 5

6 Komendy zostaną wykonane 10 8 *10 8, czyli razy. Dla przeszukania zakresu liczb do potrzebne będzie dodanie kolejnych pętli. Problem wykonywania obliczeń na sprawdzanej liczbie wymaga bardziej złożonego rozwiązania. Wykorzystajmy metodę, używaną w bankowości do sprawdzania poprawności numerów rachunków bankowych. Postępując zgodnie z nią, modulo z danej liczby możemy obliczyć, dzieląc sprawdzaną liczbę na części. Gdy to zrobimy obliczamy modulo z pierwszej części, a wynik dopisujemy na początku następnego fragmentu liczby. Obliczamy modulo z otrzymanej liczby i ponownie wynik umieszczamy na początku kolejnej części liczby. Na przykład: Szukamy wyniku następującego działania: % 7 Podzielmy liczbę na części: Obliczmy modulo z pierwszego fragmentu liczby: 21 % 7 = 0 Dopiszmy wynik na początku drugiego fragmentu i obliczmy modulo: 035 % 7 = 0 (liczymy jak 35 % 7) Powtórzmy powyższe czynności aż do uzyskania ostatecznego wyniku: 076 % 7 = % 7 = 4 Otrzymaliśmy ostatecznie 4, więc reszta z dzielenia przez 7 wynosi 4. Dostosujmy tę metodę do potrzeb programu i możliwości języka. Liczbę będziemy przechowywać w postaci rozbitej na tablicy sprliczba. Obliczmy na jak małe fragmenty musimy dzielić liczbę. Największa liczba pierwsza z zakresu do 10 8 to Oznacza to, że podczas sprawdzania kolejnego zakresu największa reszta z dzielenia jaką możemy uzyskać ma wartość Aby nie wykroczyć poza zakres zmiennej, po dopisaniu tej reszty przed fragmentem liczby musimy dzielić sprawdzaną liczbę na części jednocyfrowe. Dołączmy do programu dwie funkcje. Pierwsza z nich będzie zwiększać przechowywaną na tablicy liczbę (nadajmy tej funkcji nazwę powiększ). Druga będzie odpowiedzialna za wykonywanie obliczeń (nazwiemy ją dziel) ŹRÓDŁO void powieksz(){ 2. int wskaznik=1;//wskaźnik rządu na którym operujemy (początkowo wskazuje //na rząd jedności) 3. char flagaws=0; 4. sprliczba[wskaznik]+=2;//powiększamy rząd jedności 5. if(sprliczba[wskaznik]>10){//jeśli wartość rządu jedności przekroczy 10 //musimy ją zredukować do 1 i powiększyć //liczbę w kolejnym rzędzie 6. sprliczba[wskaznik]=1; 7. wskaznik++; 8. while(flagaws==0){ 9. sprliczba[wskaznik]=sprliczba[wskaznik]+1; 10. if(sprliczba[wskaznik]=10){ 11. sprliczba[wskaznik]=0; 12. wskaznik++; 13. }else flagaws=1; 14. }//koniec while 6

7 15. }//koniec if z linii }//koniec funkcji powieksz Zmienna wskaźnik przechowuje pozycje na tablicy na której wykonywane są obliczenia. W liniach 4-6 operujemy na fragmencie liczby, który odwzorowuje rząd jedności. Dlatego zwiększamy tą pozycję o 2, dzięki czemu omijamy w czasie sprawdzania liczby parzyste (UWAGA: musimy zacząć od liczby nieparzystej). Pozostałe pozycje zwiększamy o jeden. W liniach 5. i 10. przy pomocy instrukcji if sprawdzamy czy liczby w danym rzędzie osiągnęły (lub przekroczyły w przypadku rzędu jedności) wartość 10. Jeśli tak jest musimy te pozycje zredukować i zwiększyć liczby w kolejnych rzędach. Poniżej kod drugiej ze wspomnianych wcześniej funkcji: ŹRÓDŁO void dziel(){ 2. char flagawyp=0; 3. long int reszta=0; 4. m=40; 5. reszta=0; 6. while(flagawyp==0 && m--){ 7. if(sprliczba[m]!=0)flagawyp=1; 8. }//koniec while 9. while(m>0){ 10. if(reszta!=0)reszta=(reszta*10+sprliczba[m])%liczp[j]; 11. else reszta=sprliczba[m]%liczp[j]; 12. m--; 13. }//koniec while 14. wynikmod=reszta; 15. }//koniec procedury dziel Przy pomocy pętli while w liniach 6-8, z wykorzystaniem zmiennej m, określamy od jakiej pozycji na tablicy zaczynamy operować na liczbie (pozostałe pozycje zawierają zera). Choć różnica w prędkości działania pomiędzy powyższą metodą a tą, która zastosowaliśmy wcześniej może nie być zauważalna jeśli uruchomimy program na niskich zakresach, to jednak dla liczb do 10 8 jej wykorzystywanie wydłuża znacznie czas pracy programu. Dlatego też dla początkowych zakresów będziemy stosować starą metodę. Wprowadźmy zmienną fpid, która będzie regulować z którego algorytmu ma korzystać program. Funkcja szukaj uzyskuje ostatecznie formę: ŹRÓDŁO void szukaj() 2. { 3. short int flaga; 4. long int flagapoz; 5. char flagawyp=0; 6. illiczb=nilliczb; 7. for(long int op1=minz1; op1<=maxz1; op1++) 8. { 9. for(long int op2=minz2; op2<=maxz2; op2++) 10. { 11. flaga=1; 12. flagapoz=0; 7

8 13. j=0; 14. liczba=liczba+2; 15. powieksz(); 16. while(flaga!=0) 17. { 18. j++; 19. if(j>illiczb){ 20. flaga=0; 21. } 22. else{ 23. if(fpid==1) dziel(); 24. else wynikmod=liczba%liczp[j]; 25. if(wynikmod==0){flaga=0;} 26. else{flagapoz++;} 27. } 28. }//koniec while 29. if(flagapoz==illiczb){ 30. nilliczb++; 31. if(fpid==1){ flagawyp=0; 34. for(m=49; m>=1; m--){ 35. if(sprliczba[m]!=0)flagawyp=1; 36. if(flagawyp==1)printf("%i",sprliczba[m]); 37. } 38. printf(" >fpid<\n"); } 41. else{ 42. printf("%i\n",liczba); 43. liczp[nilliczb]=liczba; 44. } 45. ilwierszy++; 46. pauza(); 47. } 48. } 49. } 50. } Jeśli liczba zostanie uzyskana przy użyciu funkcji powiększ i dziel, obok niej pojawi się napis >fpid< (38. linia kodu). Dodatkowo liczby w ten sposób uzyskane nie są zapisywane na tablicy. Funkcję init uzupełniamy w następujący sposób: ŹRÓDŁO void init(){ 2. clrscr(); 3. liczp[1]=2; 4. liczp[2]=3; 5. liczp[3]=5; 6. liczp[4]=7; 7. illiczb=4; 8. nilliczb=illiczb; 9. liczba=7; 8

9 10. sprliczba[1]=7; 11. for(int k=2; k<=50; k++){ 12. sprliczba[k]=0; 13. } 14. printf("%i\n%i\n%i\n%i\n",liczp[1],liczp[2],liczp[3],liczp[4]); 15. ilwierszy=4; 16. } Funkcja main przybiera postać: ŹRÓDŁO main() 2. { 3. init(); 4. fpid=0; 5. minz1=1; 6. maxz1=1; 7. minz2=1; 8. maxz2=45; 9. szukaj(); 10. minz1=1; 11. maxz1=1; 12. minz2=1; 13. maxz2=4949; 14. szukaj(); 15. minz1=1; 16. maxz1=1; 17. minz2=1; 18. maxz2= ; 19. szukaj(); 20. fpid=1; 21. minz1=1; 22. maxz1= ; 23. minz2=1; 24. maxz2= ; 25. szukaj(); 26. getchar(); 27. } Zmienne globalne programu: ŹRÓDŁO long int liczp[ ]; 2. unsigned long int sprliczba[50]; 3. int illiczb,nilliczb; 4. unsigned long int liczba, wynikmod, j; 5. int minz1, maxz1, minz2, maxz2; 6. short int ilwierszy; 7. char m, fpid; Można jeszcze bardziej przyspieszyć działanie programu poprzez uzależnienie wywołania funkcji powieksz w linii 15. Źródła 7 od wartości zmiennej fpid i wypełnienie w odpowiedni sposób tablicy sprliczba w funkcji init. 9

10 Zwróćmy uwagę na wartości przypisywane zmiennym min1, max1, min2 oraz max2 przed wykonaniem każdego przesiewu. W czasie pierwszego wywołania funkcji szukaj musimy sprawdzić liczy od 1 do 100. Odrzucamy jednak liczbę 1 (bo ma tylko jeden dzielnik) i początkowe liczby pierwsze (2,3,5,7). Pomijamy także liczbę 100 (bo jest parzysta). Przeszukiwanie zaczynamy od liczby 9 (najbliższej nieparzystej po 7). Nie sprawdzamy także pozostałych parzystych, więc w istocie musimy wykonać działania na następującej ilości liczb: (99-9) / 2 = 45. W drugim przesiewie przeszukujemy liczby od 101 do 9999 (pomijamy 100 i bo są parzyste). Po odliczeniu pozostałych liczb parzystych z tego zakresu pozostaje nam: ( ) / 2 = Analogicznie obliczamy ilość koniecznych powtórzeń pętli dla pozostałych zakresów. Trzeba tu jednak zwrócić uwagę na rozbicie obliczonych wartości na dwie zmienne dla zakresu od do Jest to konieczne, ponieważ, jak już wyżej zostało to wspomniane, liczba wykracza poza zakres zmiennej. Oczywiście podane przeze mnie wartości są tylko jedną z wielu możliwości. Można je zastąpić dowolnymi liczbami mieszczącymi się w zakresie zmiennych, których iloczyn wyniesie tyle, ile ilość koniecznych powtórzeń, jaką obliczymy dla zakresu do według podanego wyżej schematu. Kolejne zakresy i problemy z nimi związane Wykonanie przesiewu dla następnego zakresu czyli dla liczb do wiąże się z koniecznością rozwiązania nowych problemów. Pierwszym jest zapisanie, wykraczających poza zakresy zmiennych, liczb uzyskanych wcześniej. Można zastosować tablice wielowymiarową, gdzie każdy wiersz zawiera jedną liczbę rozbitą na fragmenty. Powstaje jednak problem wykonywania obliczeń przy pomocy tych liczb. Rozważyć należy zatem zapis uzyskanych wcześniej liczb pierwszych w postaci sumy iloczynów. Każdą liczbę pierwszą można przedstawić jako sumę wielokrotność liczb uzyskanych wcześniej. Następnie obliczenia dla wyższych zakresów wykonywać można, wykorzystując właściwości działań na liczbach. Inną metodą może być wykorzystanie hipotezy Goldbacha, zgodnie z którą każda liczba naturalna parzysta większa od 2 jest sumą dwóch liczb pierwszych. 1 Zakładając jej prawdziwość dochodzimy do prostego wniosku, że każda liczba nieparzysta większa od 2 jest sumą dwóch liczb pierwszych pomniejszoną o jeden. Tak więc można spróbować przedstawić odnalezione liczby pierwsze właśnie w takiej postaci. Nadal jednak nie mamy prostej metody wykonywania dalszych obliczeń i nade wszystko musimy pamiętać, że hipoteza ta nie została do dnia dzisiejszego jednoznacznie rozstrzygnięta, choć większość współczesnych matematyków uważa, że jest ona prawdziwa. 2 Niezależnie od tego jaki sposób zapisu i wykonywania obliczeń na odnalezionych liczbach pierwszych wybierzemy, konieczne będzie znaczne rozbudowanie algorytmu sprawdzającego liczby z kolejnych zakresów. Spowoduje to wydłużenie czasu sprawdzania, który, choć początkowo tak krótki, że, bez zatrzymania pracy programu po wyświetleniu każdej partii informacji, nie jest możliwe wychwycenie poszczególnych liczb, po wejściu do zakresu zwiększa się do kilku (a w miarę zbliżania się do końca zakresu nawet kilkudziesięciu) sekund na odnalezienie jednej liczby. Problemem, oprócz formy zapisu liczb, jest też miejsce na ich zapis. Ilość liczb pierwszych jakie zostaną odnalezione z zakresu do jest tak duża, że należy zastanowić się nad ich zapisem poza programem (na przykład w zewnętrznym pliku). Kłopotów związanych z przesiewem kolejnych zakresów jest znacznie więcej. Prawdopodobnie wiele nowych ujawni się w czasie pracy nad rozwiązaniem tych, które jesteśmy w stanie przewidzieć. 1 Definicja hipotezy Goldbacha na podstawie strony internetowej 2 Do tej pory udało się jedynie wykazać, że hipoteza Goldbacha jest prawdziwa dla liczb naturalnych mniejszych niż informacje na podstawie strony internetowej 10

11 Największa odkryta dotychczas liczba pierwsza składa się z ponad 7 milionów cyfr (poprzednia zawierała ponad 6 milionów cyfr, a wcześniejsza ponad 4 miliony). Dla pierwszej osoby (lub zespołu), która odnajdzie liczbę pierwszą dłuższą niż 10 milionów cyfr, przewidziana jest nagroda dolarów (nagroda dla osoby, która jako pierwsza odnalazła liczbę pierwszą mającą więcej niż milion cyfr, wynosiła dolarów). DODATEK SPECJALNY Najmniejsza liczba pierwsza z zakresu 9 99: 2 Największa liczba pierwsza z zakresu 9 99: 97 Najmniejsza liczba pierwsza z zakresu : 101 Największa liczba pierwsza z zakresu : 9973 Najmniejsza liczba pierwsza z zakresu (10 8-1): Największa liczba pierwsza z zakresu (10 8-1): Najmniejsza liczba pierwsza z zakresu ( ) ( ): Największa liczba pierwsza odnaleziona przez program, na którym oparte jest to opracowanie (program pozwala na odnalezienie wszystkich liczb pierwszych do problemem jest rosnący czas sprawdzania liczb): (i ciągle szuka ;) Kody źródłowe i opracowanie autorstwa Waldemara Korłub I Liceum Ogólnokształcące w Kwidzynie 11

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

do instrukcja while (wyrażenie);

do instrukcja while (wyrażenie); Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Proste programy w C++ zadania

Proste programy w C++ zadania Proste programy w C++ zadania Zbiór zadao do samodzielnego rozwiązania stanowiący powtórzenie materiału. Podstawy C++ Budowa programu w C++ Dyrektywy preprocesora Usunięcie dublujących się nazw Częśd główna

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Język C, instrukcje sterujące (laboratorium)

Język C, instrukcje sterujące (laboratorium) Język C, instrukcje sterujące (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Na podstawie http://pl.wikibooks.org/wiki/c Wstęp Instrukcja warunkowa Instrukcja if/if-else pozwala na warunkowe

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski Programowanie w C/C++ Instrukcje - konstrukcje powtórka LABORKA Piotr Ciskowski zadanie 1. Licz się ze sobą Napisz funkcję bez argumentów i bez wyniku, która za każdym wywołaniem będzie podawała, ile razy

Bardziej szczegółowo

Program 14. #include #include using namespace std;

Program 14. #include <iostream> #include <ctime> using namespace std; Program 14 Napisać: * funkcję słuŝącą do losowego wypełniania tablicy liczbami całkowitymi z podanego zakresu (*). Parametrami funkcji mają być tablica, jej długość oraz dwie liczby stanowiące krańce przedziału

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

1 Wielokrotne powtarzanie tych samych operacji

1 Wielokrotne powtarzanie tych samych operacji 1 Wielokrotne powtarzanie tych samych operacji Zadanie 1. roszę porównać następujące programy(efekt działania każdego z nich jest takisam). rzykład 1 przedstawia najbardziej typowy zapis, powodujący wykonanie

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

----------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------- Strona1 Napisz program, który czyta zdanie, a następnie wypisuje po kolei długości kolejnych jego wyrazów. Zakładamy, że zdanie zawiera litery alfabetu łacińskiego i spacje (po jednej pomiędzy dwoma dowolnymi

Bardziej szczegółowo

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Język PHP Język interpretowalny, a nie kompilowany Powstał w celu programowania

Bardziej szczegółowo

Konstrukcje warunkowe Pętle

Konstrukcje warunkowe Pętle * Konstrukcje warunkowe Pętle *Instrukcja if sposób na sprawdzanie warunków *Konstrukcja: if(warunek) else { instrukcje gdy warunek spełniony} {instrukcje gdy warunek NIE spełniony} * 1. Wylicz całkowity

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy

Bardziej szczegółowo

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI Arytmetyka komputera Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka Opracował: Kamil Kowalski klasa III TI Spis treści 1. Jednostki informacyjne 2. Systemy liczbowe 2.1. System

Bardziej szczegółowo

PROGRAMOWANIE W C++ ZADANIA

PROGRAMOWANIE W C++ ZADANIA PROGRAMOWANIE W C++ ZADANIA Włodzimierz Gajda Rozdział 7 PĘTLE 7.1 PĘTLA FOR: rysowanie wzorków. ZADANIE 7.1.1 Napisz program drukujący na ekranie 19 gwiazdek: ******************* ZADANIE 7.1.2 Napisz

Bardziej szczegółowo

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby Scenariusz zajęć Moduł VI Projekt Gra logiczna zgadywanie liczby Moduł VI Projekt Gra logiczna zgadywanie liczby Cele ogólne: przypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka

Bardziej szczegółowo

Podzielność, cechy podzielności, liczby pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

Podzielność, cechy podzielności, liczby pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. Podzielność, cechy podzielności, liczby pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. W dniu 3 października 2013 r. omawiamy test kwalifikacyjny. Uwaga: Przyjmujemy, że 0 nie

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Programowanie, algorytmy i struktury danych

Programowanie, algorytmy i struktury danych 1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania

Bardziej szczegółowo

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. (c.d.

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. (c.d. 2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. (c.d.) 10 października 2009 r. 20. Która liczba jest większa,

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

Warunki i pętle. Instrukcja warunkowa if. Przykład zastosowania.

Warunki i pętle. Instrukcja warunkowa if. Przykład zastosowania. Warunki i pętle Poznamy użycie instrukcji warunkowych if else oraz switch. Przedstawiony zostanie również operator?, który znacznie upraszcza zapis prostych warunków. Następnie przejdziemy do pętli. Zaczniemy

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

LICZBY PIERWSZE. Jan Ciurej Radosław Żak

LICZBY PIERWSZE. Jan Ciurej Radosław Żak LICZBY PIERWSZE Jan Ciurej Radosław Żak klasa IV a Katolicka Szkoła Podstawowa im. Świętej Rodziny z Nazaretu w Krakowie ul. Pędzichów 13, 31-152 Kraków opiekun - mgr Urszula Zacharska konsultacja informatyczna

Bardziej szczegółowo

Maria Romanowska UDOWODNIJ, ŻE... PRZYKŁADOWE ZADANIA MATURALNE Z MATEMATYKI

Maria Romanowska UDOWODNIJ, ŻE... PRZYKŁADOWE ZADANIA MATURALNE Z MATEMATYKI Maria Romanowska UDOWODNIJ, ŻE... PRZYKŁADOWE ZADANIA MATURALNE Z MATEMATYKI Matematyka dla liceum ogólnokształcącego i technikum w zakresie podstawowym i rozszerzonym Z E S Z Y T M E T O D Y C Z N Y Miejski

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

E S - uniwersum struktury stosu

E S - uniwersum struktury stosu Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)

Bardziej szczegółowo

* Funkcje, podprogramy

* Funkcje, podprogramy Funkcje, podprogramy Jak go ulepszyć? Co będzie jak tych tablic będzie 100? A co będzie jak będą to różne tablice? A jak byśmy tak chcieli sobie ułatwić życie? Funkcja w matematyce, to takie coś: f x

Bardziej szczegółowo

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pętle for, while, do... while, foreach Jeszcze o operatorach... Skrócone operatory arytmetyczne przykład x +=

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

1.1. Pozycyjne systemy liczbowe

1.1. Pozycyjne systemy liczbowe 1.1. Pozycyjne systemy liczbowe Systemami liczenia nazywa się sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Dla dowolnego

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Dzień pierwszy- grupa młodsza

Dzień pierwszy- grupa młodsza Dzień pierwszy- grupa młodsza 1.TomekmaTlat.Tylesamolatliczysobiewsumietrójkajegodzieci.NlattemuwiekTomkarówny był dwukrotności sumy lat swoich dzieci. Wyznacz T/N. 2.Niechk=2012 2 +2 2012.Ilewynosicyfrajednościliczbyk

Bardziej szczegółowo

V Wojewódzki Konkurs Matematyczny dla uczniów szkół podstawowych województwa wielkopolskiego

V Wojewódzki Konkurs Matematyczny dla uczniów szkół podstawowych województwa wielkopolskiego Kod ucznia Data urodzenia ucznia Dzień miesiąc rok V Wojewódzki Konkurs Matematyczny dla uczniów szkół podstawowych ETAP REJONOWY Rok szkolny 01/016 Instrukcja dla ucznia 1. Sprawdź, czy test zawiera 1

Bardziej szczegółowo

INSTRUKCJE ITERACYJNE

INSTRUKCJE ITERACYJNE INSTRUKCJE ITERACYJNE Zadanie nr 1 Przedstaw algorytm za pomocą a i schematów blokowych, który wyświetla na ekranie monitora 10 kolejnych liczb całkowitych począwszy od 1. Zrealizuj problem za pomocą instrukcji

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI

EGZAMIN MATURALNY Z INFORMATYKI ARKUSZ ZAWIERA INORMACJE RAWNIE CHRONIONE DO MOMENTU ROZOCZĘCIA EGZAMINU! Miejsce na naklejkę EGZAMIN MATURALNY Z INORMATYKI MIN-1_1-092 MAJ ROK 2009 OZIOM ODSTAWOWY CZĘŚĆ I Czas pracy 75 minut Instrukcja

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

Cechy podzielności liczb. Autor: Szymon Stolarczyk

Cechy podzielności liczb. Autor: Szymon Stolarczyk Cechy podzielności liczb Autor: Szymon Stolarczyk Podzielnośd liczb Podzielnośd przez 2 Podzielnośd przez 3 Podzielnośd przez 4 Podzielnośd przez 5 Podzielnośd przez 9 Podzielnośd przez 10 Podzielnośd

Bardziej szczegółowo

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Być może jesteś doświadczonym programistą, biegle programujesz w Javie, Kompendium PHP 01 Być może jesteś doświadczonym programistą, biegle programujesz w Javie, C++, Pythonie lub jakimś innym języku programowania, których jak myślę, powstało już tyle, że chyba nie ma osoby,

Bardziej szczegółowo

Szkoła Podstawowa. Uczymy się dowodzić. Opracowała: Ewa Ślubowska. ewa.slubowska@wp.pl

Szkoła Podstawowa. Uczymy się dowodzić. Opracowała: Ewa Ślubowska. ewa.slubowska@wp.pl Szkoła Podstawowa Uczymy się dowodzić Opracowała: Ewa Ślubowska ewa.slubowska@wp.pl PODSTAWA PROGRAMOWA PRZEDMIOTU MATEMATYKA II etap edukacyjny: klasy IV VI I. Sprawność rachunkowa. Uczeń wykonuje proste

Bardziej szczegółowo

Matematyka Dyskretna Zestaw 2

Matematyka Dyskretna Zestaw 2 Materiały dydaktyczne Matematyka Dyskretna (Zestaw ) Matematyka Dyskretna Zestaw 1. Wykazać, że nie istnieje liczba naturalna, która przy dzieleniu przez 18 daje resztę 13, a przy dzieleniu przez 1 daje

Bardziej szczegółowo

3 Przygotował: mgr inż. Maciej Lasota

3 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 3 1/8 Język C Instrukcja laboratoryjna Temat: Instrukcje warunkowe, pętle. 3 Przygotował: mgr inż. Maciej Lasota 1) Instrukcje warunkowe. Instrukcje warunkowe pozwalają zdefiniować warianty

Bardziej szczegółowo

VII Olimpiada Matematyczna Gimnazjalistów

VII Olimpiada Matematyczna Gimnazjalistów VII Olimpiada Matematyczna Gimnazjalistów Zawody stopnia pierwszego część testowa, test próbny www.omg.edu.pl (wrzesień 2011 r.) Rozwiązania zadań testowych 1. Liczba krawędzi pewnego ostrosłupa jest o

Bardziej szczegółowo

Funkcje i instrukcje języka JavaScript

Funkcje i instrukcje języka JavaScript Funkcje i instrukcje języka JavaScript 1. Cele lekcji a) Wiadomości Uczeń : zna operatory i typy danych języka JavaScript, zna konstrukcję definicji funkcji, zna pętlę If i For, Do i While oraz podaje

Bardziej szczegółowo

ZBIÓR ZADAŃ Z INFORMATYKI

ZBIÓR ZADAŃ Z INFORMATYKI ZBIÓR ZADAŃ Z INFORMATYKI OPRACOWANY W RAMACH PROJEKTU KOMPETENCJE KLUCZOWE DROGĄ DO KARIERY WSPÓŁFINANSOWANEGO ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO opracowany przez

Bardziej szczegółowo

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ INE 2022 JĘZYKI PROGRAMOWANIA 1 INE 0050 WSTĘP DO PROGRAMOWANIA Programowanie w języku C++ ( wykł. dr Marek Piasecki ) Literatura: do wykładu dowolny podręcznik do języka C++ na laboratoriach Borland C++

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem 27.10.2010

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem 27.10.2010 ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem 27.10.2010 Do zapisu liczby ze znakiem mamy tylko 8 bitów, pierwszy od lewej bit to bit znakowy, a pozostałem 7 to bity na liczbę. bit znakowy 1 0 1 1

Bardziej szczegółowo

#include void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Operacje logiczne i struktury sterujące.

Operacje logiczne i struktury sterujące. Operacje logiczne i struktury sterujące. (wspomaganie obliczeń inżynierskich) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z elementami programowania wysokopoziomowego, a szczególności operacjami

Bardziej szczegółowo

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

Polcode Code Contest PHP-10.09

Polcode Code Contest PHP-10.09 Polcode Code Contest PHP-10.09 Przedmiotem konkursu jest napisanie w języku PHP programu, którego wykonanie spowoduje rozwiązanie zadanego problemu i wyświetlenie rezultatu. Zadanie konkursowe Celem zadania

Bardziej szczegółowo

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia. ARYTMETYKA BINARNA ROZWINIĘCIE DWÓJKOWE Jednym z najlepiej znanych sposobów kodowania informacji zawartej w liczbach jest kodowanie w dziesiątkowym systemie pozycyjnym, w którym dla przedstawienia liczb

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

Wojewódzki Przedmiotowy Konkurs z informatyki dla uczniów szkół gimnazjalnych ETAP REJONOWY 2008/2009 TEST

Wojewódzki Przedmiotowy Konkurs z informatyki dla uczniów szkół gimnazjalnych ETAP REJONOWY 2008/2009 TEST TEST. Test składa się z 35 zadań. Na jego rozwiązanie masz 90 minut. W kaŝdym zadaniu wybierz jedną, najlepszą według Ciebie odpowiedź i zaznacz na karcie odpowiedzi znakiem x. Do dyspozycji masz wszystkie

Bardziej szczegółowo

Rys.2.1. Drzewo modelu DOM [1]

Rys.2.1. Drzewo modelu DOM [1] 1. CEL ĆWICZENIA Celem ćwiczenia jest przedstawienie możliwości wykorzystania języka JavaScript do tworzenia interaktywnych aplikacji działających po stronie klienta. 2. MATERIAŁ NAUCZANIA 2.1. DOM model

Bardziej szczegółowo

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Zapis liczb binarnych ze znakiem

Zapis liczb binarnych ze znakiem Zapis liczb binarnych ze znakiem W tej prezentacji: Zapis Znak-Moduł (ZM) Zapis uzupełnień do 1 (U1) Zapis uzupełnień do 2 (U2) Zapis Znak-Moduł (ZM) Koncepcyjnie zapis znak - moduł (w skrócie ZM - ang.

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 11 1 / 52 Pętla for # i n c l u d e

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012 Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012 if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; if (warunek) instrukcja1; else if (warunek2)

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Programowanie 3 - Funkcje, pliki i klasy

Programowanie 3 - Funkcje, pliki i klasy Instytut Informatyki Uniwersytetu Śląskiego Laborki funkcja; parametry funkcji; typ zwracany; typ void; funkcje bez parametrów; napis.length() - jako przykład funkcji. Zadania funkcja dodająca dwie liczby;

Bardziej szczegółowo

Scenariusz lekcji Ozobot w klasie: Prezentacja liczb trójkątnych i kwadratowych

Scenariusz lekcji Ozobot w klasie: Prezentacja liczb trójkątnych i kwadratowych Scenariusz lekcji Ozobot w klasie: Prezentacja liczb trójkątnych i kwadratowych Opracowanie scenariusza: Richard Born Adaptacja scenariusza na język polski: mgr Piotr Szlagor Tematyka: Matematyka, Informatyka,

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja Rok akademicki 2011/2012, Pracownia nr 9 2/24 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2011/2012 Pracownia nr

Bardziej szczegółowo

KURS C/C++ WYKŁAD 6. Wskaźniki

KURS C/C++ WYKŁAD 6. Wskaźniki Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można

Bardziej szczegółowo

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji? Zadanie 01 W przedstawionym ponizej programie w jezyku ANSI C w miejscu wykropkowanym brakuje jednej linii: #include... int main() { printf("tralalalala"); return 0; } A. B. "iostream" C.

Bardziej szczegółowo

Gimnazjum w Tęgoborzy - Algorytmika Strona 1 z 22 mgr Zofia Czech

Gimnazjum w Tęgoborzy - Algorytmika Strona 1 z 22 mgr Zofia Czech ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu

Bardziej szczegółowo

Podstawy programowania (1)

Podstawy programowania (1) Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie

Bardziej szczegółowo