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

438 - Liczby pierwsze: gdzie jest błąd?

Object Storage Arubacloud
0 głosów
729 wizyt
pytanie zadane 15 sierpnia 2019 w SPOJ przez michlik6 Nowicjusz (120 p.)
zmienione kategorie 15 sierpnia 2019 przez Patrycjerz

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;
		}
	}	
}

 

2 odpowiedzi

+1 głos
odpowiedź 15 sierpnia 2019 przez manjaro Nałogowiec (37,390 p.)
Zastanów się czy liczba 49 jest liczbą pierwszą i jak widzi ją Twój program...
0 głosów
odpowiedź 15 sierpnia 2019 przez Patrycjerz Mędrzec (192,320 p.)
Przecież liczby pierwsze to nie takie, które są 2, 3, 5 i poza tym, które nie dzielą się przez powyższe, tylko takie, które dzielą się jedynie przez jeden i przez samą siebie, z wyjątkiem jedynki. Poczytaj np. o sicie Eratostenesa.
komentarz 15 sierpnia 2019 przez michlik6 Nowicjusz (120 p.)
Liczby 2,3,5 to tak jakby warunki. Jeśli dana liczba nie dzieli się przez żadne z powyższych to jest ona liczbą pierwszą (czyli dzieli się tylko przez 1 i samą siebie), a jeśli się dzieli przez którąś z powyższych to nie jest ona liczbą pierwszą. Jak pisałem, sprawdzałem to na wiele sposobów i działa- pokazuje dobry wynik, na moim kompilatorze. Także nie rozumiem, czemu na stronie niby nie działa.

Zresztą zachęcam Cię, abyś sam skompilował ten kod i zobaczył czy jest dobry wynik, bo możliwe że moje sposoby okazały się nietrafne.
komentarz 15 sierpnia 2019 przez Patrycjerz Mędrzec (192,320 p.)
edycja 15 sierpnia 2019 przez Patrycjerz

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.

komentarz 15 sierpnia 2019 przez VirtualMember Pasjonat (15,790 p.)

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... 

komentarz 15 sierpnia 2019 przez Patrycjerz Mędrzec (192,320 p.)
Liczb całkowitych? Podaj jakiś przykład, bo mi taka nie przychodzi do głowy.
komentarz 15 sierpnia 2019 przez niezalogowany
49 = 7 * 7

77 = 7 * 11

...
komentarz 15 sierpnia 2019 przez Patrycjerz Mędrzec (192,320 p.)
No tak, w pośpiechu założyłem, że nie ma takich liczb.
komentarz 16 sierpnia 2019 przez VirtualMember Pasjonat (15,790 p.)
"Jednak są, np. 49, tylko znacznie mniej niż tych z rozkładem na 2, 3 lub 5."

To też nie jest prawda. Moc liczb całkowitych jest taka sama jak liczb naturalnych i wynosi aleph zero. Moc zbioru liczb pierwszych też ma taką moc.
komentarz 16 sierpnia 2019 przez Patrycjerz Mędrzec (192,320 p.)
Oczywiście, chodziło mi bardziej o ich częstość.

Podobne pytania

0 głosów
1 odpowiedź 617 wizyt
pytanie zadane 10 listopada 2019 w C i C++ przez PaaaV Nowicjusz (140 p.)
0 głosów
1 odpowiedź 791 wizyt
pytanie zadane 10 kwietnia 2016 w C i C++ przez danior Początkujący (330 p.)
0 głosów
0 odpowiedzi 376 wizyt
pytanie zadane 2 stycznia 2020 w SPOJ przez Bezk Nowicjusz (140 p.)

92,555 zapytań

141,403 odpowiedzi

319,558 komentarzy

61,940 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!

...