Wątek przeniesiony 2017-07-03 08:16 z C/C++ przez ŁF.

znajdowanie liczb pierwszych...

0

Mam takie zadanie: znajdź 10 najmniejszych liczb pierwszych które są suma dwóch nieparzystych liczb pierwszych p i q zwiększonych o 1 czyli (p+q+1)

Wyznaczyć liczby pierwsze potrafię natomiast dalsza część zadania mnie przerasta... Wytłumaczy mi ktoś jak powinien zachować się algorytm dla takiego przypadku?

mój dotychczasowy kod:

#include <iostream>

using namespace std;

int main()
{
  unsigned int n,lp,p,d;
  bool t;

  n = 20;
  lp = 0;
  p  = 2;
  while(lp < n)
  {
    t = true;
    for(d = 2; d < p; d++)
      if(p % d == 0)
      {
        t = false;
        break;
      }
    if(t)
    {
      cout << p << " ";
      lp++;
    }
    p++;
  }
  cout << endl;
  return 0;
} 
0

Popraw ten algorytm, bo w tej postaci dla dużych liczb będzie problem z wydajnością. Po drugie proponuje gdzieś zapisywać te liczby, bo później się przydadzą ;-)

Co do pytania, to masz znaleźć 10 najmniejszych liczb pierwszych, których suma będzie równa p + q + 1.

0

Jako test, czy liczba jest pierwsza najlepszy jest Miller Rabin, a oto i on w C. Pierwszy pomysł, brute force, to:

  1. Utworzyć sobie talicę liczb pierwszych od 3; jakąś tam, nie za dużą, może wystarczy;
  2. Przeiterować po wszystkich kombinacjach, i sprawdzać warunek w petli;
    3 Wziąć najmniejesze 10.

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