Professional Documents
Culture Documents
Sito - Eratostenesa - Zadania - Maturalne 2
Sito - Eratostenesa - Zadania - Maturalne 2
Wprowadzenie
Przeczytaj
Prezentacja mul medialna
Sprawdź się
Dla nauczyciela
Sito Eratostenesa – zadania maturalne
Sito Eratostenesa jest algorytmem wyznaczającym liczby pierwsze z zadanego przedziału [2,
n]. Liczby pierwsze znajdują zastosowanie m.in. w kryptografii, o czym przeczytasz
w e‐materiałach:
W tym e‐materiale znajdziesz zadania dotyczące implementacji tego algorytmu wraz z ich
omówieniem.
Zadanie 1. Pary
W pliku pary.txt znajduje się 100 wierszy. Każdy wiersz zawiera parę danych składającą
się z liczby całkowitej z przedziału od 3 do 100 i słowa (ciągi znaków) złożone z małych liter
alfabetu angielskiego o długości od 1 do 50 znaków. Liczba i słowo są oddzielone znakiem
spacji.
Zadanie 1.1.
Mocna hipoteza Goldbacha mówi, że każda parzysta liczba całkowita większa od 4 jest sumą
dwóch nieparzystych liczb pierwszych, np. liczba 20 jest równa sumie 3 + 17 lub sumie 7 +
13.
Każdą liczbę parzystą z pliku pary.txt przedstaw w postaci sumy dwóch liczb
pierwszych. Wypisz tę liczbę oraz dwa składniki sumy w kolejności niemalejącej. Jeżeli
istnieje więcej rozwiązań (tak jak dla liczby 20), należy wypisać składniki sumy o największej
różnicy.
1 24 5 19
2 6 3 3
3 6 3 3
Przykładowe rozwiązanie
Nasze rozwiązanie będzie opierać się na algorytmie sita Eratostenesa. Podczas omawiania
rozwiązania skupimy się wyłącznie na części związanej z liczbami pierwszymi.
Kolejnym krokiem jest napisanie algorytmu sita Eratostenesa. Komórkom, których indeksy
są liczbami złożonymi, przypiszemy wartość fałsz. Proces zmiany wartości nazywamy
„wykreślaniem”. Po wykonaniu tej części kodu w tablicy sito, indeksy w których
komórkach pozostała wartość prawda, są liczbami pierwszymi.
Odpowiedź:
Plik "wynik.txt" do zadania nr 1
Plik o rozmiarze 247.00 B w języku polskim
Schemat oceniania:
Zasady oceniania:
Słownik
kryptografia
dziedzina kryptologii, zajmująca się zabezpieczaniem informacji przed niepowołanym
dostępem
liczba pierwsza
liczba naturalna większa od 1, która dzieli się tylko przez jeden i przez samą siebie
sito Eratostenesa
algorytm, który przesiewa liczby z określonego przedziału w taki sposób, że zostają w nim
tylko liczby pierwsze; służy on do znajdywania wszystkich liczb pierwszych w podanym
przedziale
Prezentacja mul medialna
Dane są dwa pliki: liczby.txt i pierwsze.txt. Plik liczby.txt zawiera 300 wierszy.
W każdym wierszu tego pliku znajduje się jedna liczba całkowita dodatnia z zakresu od 1 do
100 000.
Plik pierwsze.txt zawiera 200 wierszy. W każdym wierszu tego pliku znajduje się jedna
liczba pierwsza z zakresu od 10 do 1 300 000.
Zadanie 2.1.
Dla pliku liczby_przyklad.txt odpowiedzią są liczby: 103, 163, 173, 701, 1033, 2137, 3529,
4933, 977, 2143.
Przykład:
Jeśli odczytamy liczbę pierwszą 17 od prawej do lewej, otrzymamy liczbę 71, która również
jest liczbą pierwszą.
Zadanie zostało przygotowane przez Centralną Komisję Egzaminacyjną i pojawiło się na
egzaminie maturalnym z informatyki w czerwcu 2019 roku (cz. 2.).
Polecenie 1
Polecenie 2
h ps://zpe.gov.pl/b/PcqgBS9sW
1
2 pierwsze = wczytaj liczby
z pliku
3
2 Materiał audio dostępny pod adresem:
h ps://zpe.gov.pl/b/PcqgBS9sW
1
2 pierwsze = wczytaj liczby
z pliku
3 n = 9 999 999
4
5 sito[n] //tablica wartości
logicznych
6
7 dla i = 0, 1, ... n
wykonuj:
8 sito[i] = True
9
10
h ps://zpe.gov.pl/b/PcqgBS9sW
1
2 pierwsze = wczytaj liczby
z pliku
3 n = 9 999 999
4
5 sito[n] //tablica wartości
logicznych
6
7 dla i = 0, 1, ... n
wykonuj:
8 sito[i] = True
9
10 i = 2
11 dopóki i*i <= n wykonuj :
12 jeżeli sito[i] ==
prawda wykonaj:
13 j = i * i
14 dopóki j < n
wykonuj:
15 sito[j] =
fałsz
16 j = j + i
17 i = i + 1
18
19
h ps://zpe.gov.pl/b/PcqgBS9sW
h ps://zpe.gov.pl/b/PcqgBS9sW
1
2 pierwsze = wczytaj liczby
z pliku
3 n = 9 999 999
4
5 sito[n] //tablica wartości
logicznych
6
7 dla i = 0, 1, ... n
wykonuj:
8 sito[i] = True
9
10 i = 2
11 dopóki i*i <= n wykonuj :
12 jeżeli sito[i] ==
prawda wykonaj:
13 j = i * i
14 dopóki j < n
wykonuj:
15 sito[j] =
fałsz
16 j = j + i
17 i = i + 1
18
19 dla i = 0, 1, 2 ... 200
wykonuj:
20 liczba = pierwsze[i]
21 odwroconaLiczba = 0
22
23 dopóki liczba > 0
wykonuj:
24 biezacaCyfra =
liczba mod 10
25 odwroconaLiczba =
(odwroconaLiczba * 10) +
biezacaCyfra
26 liczba = liczba
div 10
27
28
h ps://zpe.gov.pl/b/PcqgBS9sW
1
2 pierwsze = wczytaj liczby
z pliku
3 n = 9 999 999
4
5 sito[n] //tablica wartości
logicznych
6
7 dla i = 0, 1, ... n
wykonuj:
8 sito[i] = True
9
10 i = 2
11 dopóki i*i <= n wykonuj :
12 jeżeli sito[i] ==
prawda wykonaj:
13 j = i * i
14 dopóki j < n
wykonuj:
15 sito[j] =
fałsz
16 j = j + i
17 i = i + 1
18
19 dla i = 0, 1, 2 ... 200
wykonuj:
20 liczba = pierwsze[i]
21 odwroconaLiczba = 0
22
23 dopóki liczba > 0
wykonuj:
24 biezacaCyfra =
liczba mod 10
25 odwroconaLiczba =
(odwroconaLiczba * 10) +
biezacaCyfra
26 liczba = liczba
div 10
27
28 jeżeli
sito[odwroconaLiczba] ==
prawda:
29 wypisz pierwsze[i]
30
Schemat oceniania:
Zasady oceniania:
4 pkt – za poprawną odpowiedź (wypisanie wszyskich 51 liczb);
3 pkt – za pominięcie jednej liczby;
2 pkt – za pominięcie dwóch liczb;
1 pkt – za pominięcie trzech liczb;
0 pkt – za pominięcie czterech i więcej liczb.
Schemat oceniania pochodzi z arkusza odpowiedzi egzaminu maturalnego z informatyki
z czerwca 2019 roku.
Polecenie 3
Dodaj do swojego programu komentarze tak, żeby był zrozumiały dla osoby, która nie potrafi
programować.
Sprawdź się
Zadanie 3. Punkty XY
Plik punkty.txt zawiera 1000 wierszy, w których zapisane są po dwie liczby całkowite
z przedziału [0, 10000], oddzielone pojedynczym odstępem. Para liczb w każdym wierszu
odpowiada współrzędnym (x, y) jednego punktu w układzie kartezjańskim. W danych
punkty się nie powtarzają.
Zadanie 3.1.
Specyfikacja:
Dane:
Wynik:
1 #include <iostream>
2 #include <cmath>
3 #include <fstream>
4 #include <string>
5
6 using namespace std;
7 int main() {
8 string plikNazwa = "punkty.txt";
9
10 //Miejsce na Twój kod
11
12 return 0;
13 }
Ćwiczenie 2 醙
1 import java.io.File;
2 import java.io.FileNotFoundException;
3 import java.util.Scanner;
4
5 public class Rozwiazanie {
6 public static void main(String[] args) throws
FileNotFoundException {
7 String plik = "punkty.txt";
8
9 //Miejsce na Twój kod.
10
11 }
12 }
Ćwiczenie 3 醙
1 plik = "punkty.txt"
Odpowiedź:
1 18
Schemat oceniania:
Wymagania ogólne Wymagania szczegółowe
Zasady oceniania:
Grupa docelowa:
Podstawa programowa:
Strategie nauczania:
konstruktywizm;
konektywizm.
dyskusja;
rozmowa nauczająca z wykorzystaniem multimedium i ćwiczeń interaktywnych;
ćwiczenia praktyczne.
Formy pracy:
praca indywidualna;
praca w parach;
praca w grupach;
praca całego zespołu klasowego.
Środki dydaktyczne:
Przebieg lekcji
Przed lekcją:
1. Przygotowanie do zajęć. Nauczyciel loguje się na platformie i udostępnia e‐materiał:
„Sito Eratostenesa – zadania maturalne”. Nauczyciel prosi uczniów o zapoznanie się
z multimedium w sekcji „Prezentacja multimedialna”.
Faza wstępna:
Faza realizacyjna:
Faza podsumowująca:
Praca domowa:
Materiały pomocnicze:
Wskazówki metodyczne: