Piotr Bajtocki prowadzi firmę budowlaną. Zgodnie z prawem ma obowiązek zaopatrzyć swoich pracowników w wodę. Butelki wody o pojemności 1,5 litra są pakowane w zgrzewkach. W każdej z nich zapakowano pewną liczbę pierwszą butelek. Najmniejsza zgrzewka opakowuje m butelek; największa n. Litr wody kosztuje x złotych. Budżet Piotra wynosi y złotych. Jak dużą zgrzewkę wody może kupić?
Jeśli liczba butelek, które w zgrzewce może kupić pan Bajtocki, jest większa od n, oznacza to, że jego budżet pozwala na zakup największej zgrzewki.
W swoim rozwiązaniu nie wykorzystuj metody Math.sqrt.
Swoje rozwiązanie przetestuj dla x wynoszącego 0,80; y równego 70; n równego 97.
Specyfikacja problemu:
Dane:
x – cena litra wody; liczba zmiennoprzecinkowa dodatnia
y – budżet Piotra; liczba zmiennoprzecinkowa dodatnia
n – maksymalna liczba butelek w zgrzewce; liczba pierwsza;
m – liczba butelek w najmniejszej zgrzewce; liczba pierwsza;
Wynik:
Na standardowym wyjściu program wypisuje największą liczbę butelek w zgrzewce, która mieści się w budżecie Piotra.
R10pcC3bfc3N91
Przykładowe rozwiązanie zadania:
Linia 1. public class Rozwiazanie otwórz nawias klamrowy.
Linia 2. 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 3. int n znak równości 97 średnik.
Linia 4. int m znak równości 5 średnik.
Linia 5. double x znak równości 0 kropka 8 średnik.
Linia 6. double y znak równości 70 kropka 00 średnik.
Linia 8. prawy ukośnik prawy ukośnik wyznaczanie sita i zwiększamy n.
Linia 9. n plus plus średnik.
Linia 10. boolean otwórz nawias kwadratowy zamknij nawias kwadratowy sito znak równości new boolean otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 11. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 12. sito otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości true średnik.
Linia 13. zamknij nawias klamrowy.
Linia 15. for otwórz nawias okrągły int i znak równości 2 średnik i asterysk i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. int j znak równości i asterysk i średnik.
Linia 18. while otwórz nawias okrągły j otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 19. sito otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości false średnik.
Linia 20. j znak równości j plus i średnik.
Linia 21. zamknij nawias klamrowy.
Linia 22. zamknij nawias klamrowy.
Linia 23. zamknij nawias klamrowy.
Linia 25. double cenaButelki znak równości x asterysk 1 kropka 5 średnik.
Linia 26. int ileMaksymalnieMozeKupic znak równości otwórz nawias okrągły int zamknij nawias okrągły otwórz nawias okrągły y prawy ukośnik cenaButelki zamknij nawias okrągły średnik.
Linia 28. if otwórz nawias okrągły ileMaksymalnieMozeKupic zamknij nawias ostrokątny n minus 1 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik porównujemy z maksymalnym rozmiarem zgrzewki.
Linia 29. ileMaksymalnieMozeKupic znak równości n minus 1 średnik.
Linia 30. zamknij nawias klamrowy.
Linia 31. else if otwórz nawias okrągły ileMaksymalnieMozeKupic otwórz nawias ostrokątny m zamknij nawias okrągły otwórz nawias klamrowy.
Linia 32. ileMaksymalnieMozeKupic znak równości 0 średnik.
Linia 33. zamknij nawias klamrowy.
Linia 34. else otwórz nawias klamrowy.
Linia 35. while otwórz nawias okrągły wykrzyknik sito otwórz nawias kwadratowy ileMaksymalnieMozeKupic zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 36. ileMaksymalnieMozeKupic minus minus średnik.
Linia 37. zamknij nawias klamrowy.
Linia 38. zamknij nawias klamrowy.
Linia 40. System kropka out kropka println otwórz nawias okrągły ileMaksymalnieMozeKupic zamknij nawias okrągły średnik.
Linia 41. zamknij nawias klamrowy.
Linia 42. zamknij nawias klamrowy.
21
Ćwiczenie 2
Zygmunt Bajtek otrzymał od rodziców prezent – zegarek analogowy. Zafascynowany podarkiem postanowił policzyć, ile razy wskazówka minutowa wskaże liczbę pierwszą. Uzyskawszy tę wiedzę, policzył kąty między osią biegnącą od środka tarczy do minutowego 0, a wskazówką minutową wskazującą liczby pierwsze (przykład na rysunku). Napisz program, który w kolejnych liniach wypisze kolejne wartości zaczynając od trzeciej minuty.
Specyfikacja problemu:
Dane:
sito – sito Eratostenesa; 61‑elementowa tablica wartości logicznych początkowo wypełniona wartościami true
Wynik:
Na standardowym wyjściu program wypisuje w kolejnych wierszach wartości kąta .
RqIClEmxf9B52
R16BBHH00t6Oh1
Przykładowe rozwiązanie zadania:
Linia 1. public class Rozwiazanie otwórz nawias klamrowy.
Linia 2. 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 3. boolean otwórz nawias kwadratowy zamknij nawias kwadratowy sito znak równości new boolean otwórz nawias kwadratowy 61 zamknij nawias kwadratowy średnik.
Linia 4. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny sito kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. sito otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości true średnik.
Linia 6. zamknij nawias klamrowy.
Linia 8. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny Math kropka sqrt otwórz nawias okrągły sito kropka length zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. int j znak równości i asterysk i średnik.
Linia 11. while otwórz nawias okrągły j otwórz nawias ostrokątny sito kropka length zamknij nawias okrągły otwórz nawias klamrowy.
Linia 12. sito otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości false średnik.
Linia 13. j znak równości j plus i średnik.
Linia 14. zamknij nawias klamrowy.
Linia 15. zamknij nawias klamrowy.
Linia 16. zamknij nawias klamrowy.
Linia 18. int katMinuta znak równości 360 prawy ukośnik 60 średnik.
Linia 20. for otwórz nawias okrągły int i znak równości 3 średnik i otwórz nawias ostrokątny sito kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. System kropka out kropka println otwórz nawias okrągły i asterysk katMinuta zamknij nawias okrągły średnik.
Linia 23. zamknij nawias klamrowy.
Linia 24. zamknij nawias klamrowy.
Linia 25. zamknij nawias klamrowy.
Linia 26. zamknij nawias klamrowy.
31
Ćwiczenie 3
Hipoteza Goldbacha zakłada, że każda liczba naturalna parzysta większa od 2 jest sumą dwóch liczb pierwszych. Napisz program weryfikujący hipotezę Goldbacha dla liczb parzystych nie większych od n.
Swoje rozwiązanie zweryfikuj dla n wynoszącego 1000.
Specyfikacja problemu:
Dane:
n – parzysta liczba naturalna dodatnia
Wynik:
Na standardowym wyjściu program wypisuje równania potwierdzające hipotezę Goldbacha, zgodnie z poniższym schematem; NIE w przeciwnym przypadku.
Przykład wyjścia:
Lewy składnik dodawania jest mniejszy od prawego; kolejne sumy wypisywane są rosnąco:
Linia 1. 2 plus 2 znak równości 4.
Linia 2. 3 plus 3 znak równości 6.
Linia 3. 3 plus 5 znak równości 8.
Linia 4. kropka kropka kropka.
Linia 5. 3 plus 997 znak równości 1000.
RBKXhMlxUm4M01
Przykładowe rozwiązanie zadania:
Linia 1. public class Rozwiazanie otwórz nawias klamrowy.
Linia 2. 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 3. int n znak równości 1000 średnik.
Linia 5. if otwórz nawias okrągły n procent 2 znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. System kropka out kropka println otwórz nawias okrągły cudzysłów Wprowadzono liczbe nieparzysta wykrzyknik cudzysłów zamknij nawias okrągły średnik.
Linia 7. return średnik.
Linia 8. zamknij nawias klamrowy.
Linia 10. boolean otwórz nawias kwadratowy zamknij nawias kwadratowy sito znak równości new boolean otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 11. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny sito kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 12. sito otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości true średnik.
Linia 13. zamknij nawias klamrowy.
Linia 15. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny Math kropka sqrt otwórz nawias okrągły sito kropka length zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. int j znak równości i asterysk i średnik.
Linia 18. while otwórz nawias okrągły j otwórz nawias ostrokątny sito kropka length zamknij nawias okrągły otwórz nawias klamrowy.
Linia 19. sito otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości false średnik.
Linia 20. j znak równości j plus i średnik.
Linia 21. zamknij nawias klamrowy.
Linia 22. zamknij nawias klamrowy.
Linia 23. zamknij nawias klamrowy.
Linia 25. int liczbaLiczbPierwszych znak równości 0 średnik.
Linia 26. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny sito kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 27. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 28. liczbaLiczbPierwszych plus plus średnik.
Linia 29. zamknij nawias klamrowy.
Linia 31. int otwórz nawias kwadratowy zamknij nawias kwadratowy liczbyPierwsze znak równości new int otwórz nawias kwadratowy liczbaLiczbPierwszych zamknij nawias kwadratowy średnik.
Linia 33. int licznik znak równości 0 średnik.
Linia 34. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny sito kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 35. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 36. liczbyPierwsze otwórz nawias kwadratowy licznik zamknij nawias kwadratowy znak równości i średnik.
Linia 37. licznik plus plus średnik.
Linia 38. zamknij nawias klamrowy.
Linia 39. zamknij nawias klamrowy.
Linia 41. for otwórz nawias okrągły int parzysta znak równości 4 średnik parzysta otwórz nawias ostrokątny znak równości n średnik parzysta plus znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 42. prawy ukośnik prawy ukośnik Sprawdzenie czy parzysta może być wyrażone jako suma dwóch liczb pierwszych.
Linia 43. int lewa znak równości 0 średnik.
Linia 44. int prawa znak równości liczbaLiczbPierwszych minus 1 średnik.
Linia 46. while otwórz nawias okrągły lewa otwórz nawias ostrokątny znak równości prawa zamknij nawias okrągły otwórz nawias klamrowy.
Linia 47. if otwórz nawias okrągły liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy plus liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy znak równości znak równości parzysta zamknij nawias okrągły break średnik.
Linia 48. else if otwórz nawias okrągły liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy plus liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy otwórz nawias ostrokątny parzysta zamknij nawias okrągły lewa plus plus średnik.
Linia 49. else prawa minus minus średnik.
Linia 50. zamknij nawias klamrowy.
Linia 52. if otwórz nawias okrągły liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy plus liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy znak równości znak równości parzysta zamknij nawias okrągły otwórz nawias klamrowy.
Linia 53. System kropka out kropka println otwórz nawias okrągły liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy plus cudzysłów plus cudzysłów plus liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy plus cudzysłów znak równości cudzysłów plus parzysta zamknij nawias okrągły średnik.
Linia 54. continue średnik.
Linia 55. zamknij nawias klamrowy.
Linia 57. System kropka out kropka println otwórz nawias okrągły cudzysłów NIE cudzysłów zamknij nawias okrągły średnik.
Linia 58. return średnik.
Linia 59. zamknij nawias klamrowy.
Linia 60. zamknij nawias klamrowy.
Linia 61. zamknij nawias klamrowy.