Funkcja sprawdzająca czy liczba jest pierwsza

0

Witam, chce napisać funkcję, która sprawdza czy podana liczba jest liczbą pierwszą i żeby zwracała true jak tak, a false jak nie. Chciałem to zrobić w ten sposób, że reszta z dzielenia liczy pierwszej przez 2 to jest 1, ale coś mi nie idzie, oto co napisałem.

int czy_pierwsza(int x) 
 {
	if((x%2)==1) 
		return true; 
	else
		return false; 
 }
0

Tak sprawdzisz tylko czy liczba jest parzysta czy nie. Bo np. 9 nie jest liczbą pierwszą a nie dzieli się przez 2. Na Wikipedii masz całkiem ładny artykuł: Test pierwszości.

0

o_O Znaczy że u ciebie wszystkie liczby nieparzyste są pierwsze?

0

ojejku, jakoś nie ogarnąłem tego :), dzięki

0

Pomyśl nad tym:

Jeśli 1 to return false
jeśli 2 lub 3 return true

w przeciwnym przypadku
for(i=2;i<=max;i++)
if(podzielna prze z i) return false

return true.

Oczywiście nie jest to optymalne rozwiązanie ;)

0

dobra już sobie poradzę z tym, tylko myślałem że tamto jest ok i że mam jakiś inny błąd, ogólnie zamuliłem :)

0

A jaki jest rekord w rozkładaniu na czynniki?
Chodzi o długość - liczbę cyfr.

Takich o długości 100 cyfr chyba nie ma szans rozłożyć?

Dla próby niech ktoś spróbuje taką wymnożyć: 7267543978765357867

Na takie coś powinno wystarczyć kilka minut tym prostym sposobem z dzieleniem przez kolejne całkowite,
ale dłuższe proporcjonalnie dłużej, czyli nawet 30-cyfrowej tak nie załatwimy.

0

zadeklaruj sobie zmienną tmp typu bool i ustaw ją sobie na true na początku, potem w pętli sprawdzaj warunki dzielenia przez poszczególne liczby. Jeżeli w chociaż jednym reszta z dzielenia będzie 0 to ustawiaj zmienną na false.

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