Wyszukiwanie liczb Mersenne'a — pomoc ze schematem blokowym i kodem

0

Witajcie, jestem studentem pierwszego roku informatyki na PP, mam pierwsze zadanie z Delphi, zrobić schemat blokowy i napisać program. Nigdy wcześniej nie programowałem i nie tworzyłem schematu blokowego. Czy jesteście w stanie dać mi jakieś wskazówki jak zrobić prawidłowo schemat oraz napisać program do tego zadania?

zadanie:
"Liczba Mersenne'a to liczba pierwsza postaci 2p - 1, przy czym p samo jest liczbą pierwszą. Napisać program znajdujący k takich liczb.
Wskazówka. W programie wprowadzamy liczbę k > 0, po czym wypisujemy k znalezionych liczb."

1

Wiem, że nie na temat, ale nie mogę się powstrzymać. Czy na tych studiach niczego nie uczą, czy może ktoś przespał parę wykładów? Bo jakoś nie ogarniam tego, że wykładowca o niczym nie wspomniał, a potem kazał studentom wykonać jakieś zadania ;)

0

Obecnie studia odbywją się w formie zdalnej i w tym przypadku wygląda to tak, że poniższe zadanie mieliśmy robić na lab. w salach ale jako, że nie możemy być w budynku to dostajemy te zadania do domu. Nie będę się rozwodził na temat tego, że zdalne nauczanie pozostawia wiele do życzenia i wielku prowadzący po prostu nie daje rady. NIe proszę o rozwiązanie za mnie zadania a wskazówki. Wszystkie wykłady mam nagrane i historia programu mało ma wspólnego z tym jak go napisać.

0

No a nie dostaliście żadnych materiałów? Jakichś prezentacji, plików PDF z treścią wykładów, czegokolwiek innego? Co do zdalnego nauczania - w pełni rozumiem, to porażka i kpina. Sam ma do czynienia z tym z moimi dzieciakami (podstawówka) i widzę, ze to parodia totalna :/

0

Jedyne co usłyszeliśmy w dniu 20.12 to "Proszę przeczytać moją książkę, tam jest wszystko napisane" Tylko, że biblioteka od 21 do dziś była zamknięta. A do niedzieli muszę przesłać schemat blokowy.

3

Czekaj... PP to Politechnika Poznańska, środowisko to Delphi, do tego "moje książki" - czyżby chodziło o Marciniaka? :D On jeszcze żyje i naucza? Wygląda na to, że w świecie polskiego Pascala jest tym samym, czym Maryla Rodowicz na imprezie sylwestrowej :D

0

@cerrato: nie ciągnij offtopu. ;)

@QbaF: żeby stworzyć schemat blokowy, najpierw trzeba wiedzieć w jaki sposób wyszukuje się liczby Mersenne'a, czyli trzeba znać algorytm (listę kroków wymaganych do rozwiązania problemu). Tak więc na początek poszukaj w sieci opisu wyszukiwania takich liczb i postaraj się go zrozumieć, a później zajmiemy się kolejnymi rzeczami, czyli schematem i kodem źródłowym.

1

To co podałeś to nie jest definicja Mersenne prime, to jest:

That is, it is a prime number of the form 2^n - 1 for some integer n.

https://en.wikipedia.org/wiki/Mersenne_prime

Tutaj:
https://www.mersenne.org/primes/
Ich lista. Jak widać, bardzo szybko wylatujesz poza 64 bity, czyli na zwykłych liczbach znajdziesz ich max 9, w praktyce na bigintach też będzie słabo, bo z chwilę, jak widać, liczby są zbyt duże i zabawa staje się nieefektywna.

Ale naiwnie można:

  1. wczytaj k;
  2. ustal i = 2;
  3. sprawdź czy M = 2^i - 1 jest liczbą pierwszą - jeśli tak, to:
    1. k = k - 1, wydrukuj M;
    2. jeśli k = 0 - zakończ, jeśli nie to i = i + 1 i idź do 3.
  4. jeśli M nie jest pierwsze, i = i + 1, idź do 3.

Potrzebujesz też sprawdzenia pierwszości liczby, (też, oczywiście naiwnego) ale to już mały problem.

Bardzie zaawansowany to Lucas - Lehmer test:
https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test
Implementacja w Pythonie:
https://github.com/lion137/Python-Number-Theoretic/blob/master/miller_rabin_fermat_lucas_lehmer.py

1 użytkowników online, w tym zalogowanych: 0, gości: 1