Ciąg Fibonacciego i liczby pierwsze

Ciąg Fibonacciego i liczby pierwsze
BQ
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 25
0

Cześć. Chcę znaleźć wśród pierwszych 40 liczb Fibonacciego liczby pierwsze. Napisałem program, ale wynik z pewnością nie jest poprawny... Tutaj podsyłam link do kodu: Link. Zdaję sobie sprawę z tego,że mogę zrobić to za pomocą funkcji bool, liczby pierwsze ustawić na true a pozostałe na false i w ten sposób wybrać wszystkie z wartością 'true', ale zastanawia mnie, w którym miejscu popełniłem błąd... i czy, przede wszystkim, jestem na dobrej drodze do rozwiązania. :)

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Zauważ, że w momencie, gdy napotykasz liczbę pierwszą, zerujesz aktualnie wyliczoną wartość elementu ciągu, co powoduje, że nie jesteś w stanie policzyć następnego.

BQ
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 25
0
Patryk27 napisał(a):

Zauważ, że w momencie, gdy napotykasz liczbę pierwszą, zerujesz aktualnie wyliczoną wartość elementu ciągu, co powoduje, że nie jesteś w stanie policzyć następnego.

To jest to. Dzięki! Ale chciałbym się jeszcze dowiedzieć, czy mój program będzie optymalny i czy w taki sposób można rozwiązywać takie problemy? Czy nie jest to najlepsze rozwiązanie? Zmieniony kod: Link

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Na dłuższą metę nie jest wydajny:
1.Co każdy obrót pętli liczysz kwadrat i - jest to zbędne (w sensie: założenie dobre, tylko realizacja mało wydajna).
2.Sito Eratostenesa nie jest optymalne dla większych liczb.

Althorion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1620
1

Jako że czterdziesta liczba Fibonacciego jest rzędu stu tysięcy, to jako że jest w przedziale [25 326 001; 3 215 031 750], to szybkim i pewnym testem będzie Miller‑Rabin ze świadkami 2, 3, 5 i 7.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.