Ciąg Fibonacciego to ciąg liczb naturalnych określony rekurencyjnie w sposób następujący: , , a każdy następny element ciągu jest sumą dwóch poprzednich, czyli:
Binarny fraktal Fibonacciego to dwuwymiarowa tablica zawierająca w kolejnych wierszach binarne zapisy kolejnych liczb Fibonacciego, gdzie każde zero w zapisie zastąpiono białym kwadratem, a każdą jedynkę czarnym kwadratem (p. rysunek). Wszystkie binarne zapisy powinny składać się z jednakowej liczby cyfr, czyli do zapisów krótszych niż najdłuższy należy dodać zera wiodące.
R1QF6YcRDtv1x
Ilustracja przedstawia fraktal binarny dla pierwszych dziesięciu liczb Fibonacciego. Poszczególnym pozycjom odpowiadają kolejne liczby. W pierwszej kolumnie po lewej stronie ilustracji jest litera n, w drugiej kolumnie F indeks dolny n, w trzeciej kolumnie: zapis binarny F indeks dolny n. Następnie jest tabela w kształcie pionowego prostokąta z sześcioma polami na dziesięć pól. W tabeli na niebiesko zamalowano niektóre kwadraty, na które jest podzielona tabela. Dane są następujące: dla n=1, F indeks dolny n=1, zapis binarny F indeks dolny n to 000001, w tabeli na sześć kwadratów zamalowano na czarno ostatni kwadrat; n=2, F indeks dolny n=1, zapis binarny F indeks dolny n=000001, w tabeli na czarno zmalowano ostatni kwadrat w rzędzie sześciu kwadratów; n=3, F indeks dolny n=2, zapis binarny F indeks dolny n=000010, w tabeli zamalowano piąty, czyli przedostatni kwadrat w rzędzie sześciu kwadratów; n=4, zapis binarny F indeks dolny n=3, zapis binarny F indeks dolny n=000011, w tabeli zamalowano dwa ostatnie kwadraty; n=5, F indeks dolny n=5, zapis binarny F indeks dolny n=000101, w tabeli zamalowano czwarty i szósty kwadrat w rzędzie sześciu pól; n=6, F indeks dolny n=8, zapis binarny F indeks dolny n=001000, w tabeli zamalowano trzeci kwadrat w rzędzie sześciu pól; n=7, F indeks dolny n=13, zapis binarny F indeks dolny n=001101, w tabeli zamalowano trzeci, czwarty i szósty kwadrat; n=8, F indeks dolny n=21, zapis binarny F indeks dolny n=010101, w tabeli zamalowano drugi, czwarty i szósty kwadrat; n=9, F indeks dolny n=34, zapis binarny F indeks dolny n=100010, w tabeli zamalowano pierwszy i przedostatni, czyli piąty kwadrat; n=10, F indeks dolny n=55, zapis binarny F indeks dolny n=110111, w tabeli zamalowano pierwszy, drugi, czwarty, piąty oraz szósty kwadrat.
Napisz program, który znajdzie wszystkie liczby pierwsze wśród liczb , , ... , . Zapisz każdą z liczb w osobnym wierszu pliku pierwsze.txt.
Do oceny oddajesz:
plik pierwsze.txt zawierający odpowiedź (wszystkie liczby pierwsze wśród liczb , , ... , , każda z nich zapisana w osobnym wierszu);
plik(i) z komputerową realizacją zadania (kodem programu).
Zadanie zostało opracowane przez CKE i pojawiło się w zbiorze zadań maturalnych z informatyki. Cały zbiór można znaleźć na stronie internetowej Centralnej Komisji Egzaminacyjnej.
Przetestuj działanie programu dla danych z treści zadania. Twój program powinien wypisywać rozwiązanie na ekran, a nie zapisywać je do pliku.
1
Pokaż ćwiczenia:
21
Ćwiczenie 1
JĘZYK C++
Ri5uxeScrr1oY1
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Przykładowe rozwiązanie:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny cmath zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 4. bool pierwsza otwórz nawias okrągły long a zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. if otwórz nawias okrągły a znak równości znak równości 1 zamknij nawias okrągły return false średnik.
Linia 6. if otwórz nawias okrągły a znak równości znak równości 2 kreska pionowa kreska pionowa a znak równości znak równości 3 zamknij nawias okrągły return true średnik.
Linia 7. for otwórz nawias okrągły long p znak równości 2 średnik p otwórz nawias ostrokątny znak równości sqrt otwórz nawias okrągły otwórz nawias okrągły double zamknij nawias okrągły a zamknij nawias okrągły średnik p plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. if otwórz nawias okrągły a procent p znak równości znak równości 0 zamknij nawias okrągły return false średnik.
Linia 9. zamknij nawias klamrowy.
Linia 10. return true średnik.
Linia 11. zamknij nawias klamrowy.
Linia 13. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 14. int F1 znak równości 1 średnik.
Linia 15. int F2 znak równości 1 średnik.
Linia 16. int pomoc średnik.
Linia 17. for otwórz nawias okrągły int i znak równości 3 średnik i otwórz nawias ostrokątny znak równości 40 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. pomoc znak równości F2 średnik.
Linia 19. F2 znak równości F1 plus F2 średnik.
Linia 20. F1 znak równości pomoc średnik.
Linia 21. if otwórz nawias okrągły pierwsza otwórz nawias okrągły F2 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. cout otwórz nawias ostrokątny otwórz nawias ostrokątny F2 otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 23. zamknij nawias klamrowy.
Linia 24. zamknij nawias klamrowy.
Linia 25. return 0 średnik.
Linia 26. zamknij nawias klamrowy.
#include <iostream>
#include <cmath>
using namespace std;
bool pierwsza(long a) {
if (a == 1) return false;
if (a == 2 || a == 3) return true;
for (long p = 2; p <= sqrt((double) a); p++){
if (a % p == 0) return false;
}
return true;
}
int main() {
int F1 = 1;
int F2 = 1;
int pomoc;
for (int i = 3; i <= 40; i++) {
pomoc = F2;
F2 = F1 + F2;
F1 = pomoc;
if(pierwsza(F2)){
cout << F2 << endl;
}
}
return 0;
}
21
Ćwiczenie 2
JĘZYK JAVA
R1CFmL062CZWP1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Przykładowe rozwiązanie:
Linia 1. public class Main otwórz nawias klamrowy.
Linia 2. public static boolean pierwsza otwórz nawias okrągły long a zamknij nawias okrągły otwórz nawias klamrowy.
Linia 3. if otwórz nawias okrągły a znak równości znak równości 1 zamknij nawias okrągły return false średnik.
Linia 4. if otwórz nawias okrągły a znak równości znak równości 2 kreska pionowa kreska pionowa a znak równości znak równości 3 zamknij nawias okrągły return true średnik.
Linia 5. for otwórz nawias okrągły long p znak równości 2 średnik p otwórz nawias ostrokątny znak równości Math kropka sqrt otwórz nawias okrągły otwórz nawias okrągły double zamknij nawias okrągły a zamknij nawias okrągły średnik p plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. if otwórz nawias okrągły a procent p znak równości znak równości 0 zamknij nawias okrągły return false średnik.
Linia 7. zamknij nawias klamrowy.
Linia 8. return true średnik.
Linia 9. zamknij nawias klamrowy.
Linia 11. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 12. int F1 znak równości 1 średnik.
Linia 13. int F2 znak równości 1 średnik.
Linia 14. int pomoc średnik.
Linia 15. for otwórz nawias okrągły int i znak równości 3 średnik i otwórz nawias ostrokątny znak równości 40 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. pomoc znak równości F2 średnik.
Linia 17. F2 znak równości F1 plus F2 średnik.
Linia 18. F1 znak równości pomoc średnik.
Linia 19. if otwórz nawias okrągły pierwsza otwórz nawias okrągły F2 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. System kropka out kropka println otwórz nawias okrągły F2 zamknij nawias okrągły średnik.
Linia 21. zamknij nawias klamrowy.
Linia 22. zamknij nawias klamrowy.
Linia 23. zamknij nawias klamrowy.
Linia 24. zamknij nawias klamrowy.
public class Main {
public static boolean pierwsza(long a) {
if (a == 1) return false;
if (a == 2 || a == 3) return true;
for (long p = 2; p <= Math.sqrt((double) a); p++){
if (a % p == 0) return false;
}
return true;
}
public static void main(String [] args) {
int F1 = 1;
int F2 = 1;
int pomoc;
for (int i = 3; i <= 40; i++) {
pomoc = F2;
F2 = F1 + F2;
F1 = pomoc;
if(pierwsza(F2)){
System.out.println(F2);
}
}
}
}
21
Ćwiczenie 3
JĘZYK PYTHON
R1FbC6zHGC6jO1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Przykładowe rozwiązanie zadania:
Linia 1. import math.
Linia 3. def pierwsza otwórz nawias okrągły a zamknij nawias okrągły dwukropek.
Linia 4. if a znak równości znak równości 1 dwukropek return False.
Linia 5. if a znak równości znak równości 2 or a znak równości znak równości 3 dwukropek return True.
Linia 6. p znak równości 2.
Linia 7. while p otwórz nawias ostrokątny znak równości math kropka sqrt otwórz nawias okrągły a zamknij nawias okrągły dwukropek.
Linia 8. if a procent p znak równości znak równości 0 dwukropek return False.
Linia 9. p plus znak równości 1.
Linia 10. return True.
Linia 12. F1 znak równości 1.
Linia 13. F2 znak równości 1.
Linia 14. for i in range otwórz nawias okrągły 3 przecinek 41 zamknij nawias okrągły dwukropek.
Linia 15. F1 przecinek F2 znak równości F2 przecinek F1 plus F2.
Linia 16. if pierwsza otwórz nawias okrągły F2 zamknij nawias okrągły dwukropek.
Linia 17. print otwórz nawias okrągły F2 zamknij nawias okrągły.
import math
def pierwsza(a):
if a == 1: return False
if a == 2 or a == 3: return True
p = 2
while p <= math.sqrt(a):
if a % p == 0: return False
p += 1
return True
F1 = 1
F2 = 1
for i in range(3,41):
F1, F2 = F2, F1 + F2
if pierwsza(F2):
print(F2)
Odpowiedź do zadania
pierwsze.txt
R19vu0TP3WErV
Przycisk do pobrania pliku TXT z wynikiem zadania.