Witam, zacząłem rozwiązywać problem 438-Liczby pierwsze na SPOJ'u. Sprawdzałem mój kod na wiele sposobów i na każdy działa, lecz maszyna na stronie ciągle wywala mi komunikat o błędnym wyniku. Ktoś może wie, czemu tak się dzieje? Kod: https://pastebin.com/gWydSxHS
#include <iostream> using namespace std; int main() { unsigned int tab[100000]; unsigned int a; cin >> a; if (a <= 100000 && a > 0) { for (int i = 0; i < a; i++) { cin >> tab[i]; if (tab[i] == 1) tab[i] = 0; else { if (tab[i] == 2 || tab[i] == 3 || tab[i] == 5) tab[i] = 1; else { if ((tab[i] % 2 != 0) && (tab[i] % 3 != 0) && (tab[i] % 5 != 0)) tab[i] = 1; else tab[i] = 0; } } } for (int j = 0; j < a; j++) { if (tab[j] == 1) cout << "TAK"<<endl; else cout << "NIE" << endl; } } }
Rzeczywiście, każdą liczbę całkowitą nie będącą pierwszą, poza -1, 0 i 1, można rozłożyć na czynniki 2, 3 lub 5. Tylko twój sposób nie uwzględnia liczb ujemnych. One też przejdą twój test, chociaż pierwszymi nie są.
Jednak są, np. 49, tylko znacznie mniej niż tych z rozkładem na 2, 3 lub 5.
Rzeczywiście, każdą liczbę całkowitą nie będącą pierwszą, poza -1, 0 i 1, można rozłożyć na czynniki 2, 3 lub 5
??
Przecież liczb, które nie są pierwszymi i nie mają w rozkładzie 2,3,5 jest nieskończenie wiele...
93,455 zapytań
142,449 odpowiedzi
322,719 komentarzy
62,837 pasjonatów
Motyw:
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