• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

nie mogę zrozumieć dlaczego mój kod nie wypisuje poprawnej wartości dla np przedziału od 12 do 50

Object Storage Arubacloud
0 głosów
188 wizyt
pytanie zadane 7 lutego 2023 w C i C++ przez Ultra Bronson Nowicjusz (150 p.)
#include <iostream>

using namespace std;


bool czy_pierwsza(int n)
{
    if(n<2)
        return false; //gdy liczba jest mniejsza niż 2 to nie jest pierwszą

    for(int i=2;i*i<=n;i++)
        if(n%i==0)
            return false; //gdy znajdziemy dzielnik, to dana liczba nie jest pierwsza
    return true;
}
int main()
{
  int n,x,y,w=0;
  cin>>n;
  while(n--)
  {
      cin>> x>>y;
      for(int i=x;i<=y;i++)
      {
          if(czy_pierwsza(i))
            w+=1;

      }

  } cout<<w<<endl;

    return 0;
}

Witam, nie wiem dlaczego dla niektorych przedzialów wypisuje mi złe wartości a np dla przedziału od 6 do 19 dobre. link do probmelu---> https://pl.spoj.com/problems/DYZIO2/

1 odpowiedź

+1 głos
odpowiedź 7 lutego 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
wybrane 7 lutego 2023 przez Ultra Bronson
 
Najlepsza
Nie czyścisz zmiennej w, po / przed zapytaniem

Żeby zrobić to szybciej niz O(N * (Y-Z) * SQRT(Y)) Musisz użyć sita Eratostenesa. I wtedy dostaniesz O(N*(Y-X))
komentarz 7 lutego 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
edycja 7 lutego 2023 przez pasjonat_algorytmiki
Aaaaaa nie sorki, co do tego przyśpieszenia z sitem Eratostenesa

Sitem naliczysz wszystkie liczby pierwsze do maksymalnej wartosci Y jaka masz w zadaniu chyba w treści pisze 10^6, i naliczysz sumy prefiksowe (albo drzewo przedziałowe punkt-przedział, ale to bez sensu bo będzie trudniej w implementacji i jeszcze loga dostaniesz w złożonności, czyli słaby interes) i na zapytania odpowiesz w czasie stałym. O(1), O(N + 10^6), koszt odpalenia sita, lub jesli napiszesz drzewko przedziałowe punkt-przedział to O(N * lg 10^6 + 10^6).
komentarz 7 lutego 2023 przez Ultra Bronson Nowicjusz (150 p.)
Już rozumiem o co chodzi z tym czyszczeniem, dzięki wielkie za pomoc

Podobne pytania

0 głosów
2 odpowiedzi 3,337 wizyt
0 głosów
2 odpowiedzi 148 wizyt
pytanie zadane 3 grudnia 2017 w JavaScript przez DariuszH Gaduła (3,100 p.)
0 głosów
1 odpowiedź 203 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...