Zadanie
Napisz funkcję, która akceptuje dwie liczby całkowite a,breprezentujące liczbę całkowitą Gaussa z = a+ib(liczba zespolona). Program musi zwrócić wartość true lub false, w zależności od tego, czy a+ibjest liczbą pierwszą Gaussa, czy nie .
Definicja:
a + bi jest liczbą pierwszą Gaussa wtedy i tylko wtedy, gdy spełnia jeden z następujących warunków:
aiboba są niezerowe ia^2 + b^2są liczbą pierwsząawynosi zero,|b|jest liczbą pierwszą i|b| = 3 (mod 4)bwynosi zero,|a|jest liczbą pierwszą i|a| = 3 (mod 4)
Detale
Powinieneś napisać tylko funkcję. Jeśli twój język nie ma funkcji, możesz założyć, że liczby całkowite są przechowywane w dwóch zmiennych i wydrukować wynik lub zapisać go w pliku.
Nie możesz korzystać z wbudowanych funkcji swojego języka, takich jak isprimelub prime_listlub nthprimelub factor. Najmniejsza liczba bajtów wygrywa. Praca programu musi na a,bktórym a^2+b^2jest 32-bitowy (podpisany) całkowitą i powinna zakończyć się w nie znacznie więcej niż 30 sekund.
Pierwsza lista
Kropki oznaczają liczby pierwsze na płaszczyźnie Gaussa ( x= rzeczywista, y= urojona oś):

Niektóre większe liczby pierwsze:
(9940, 43833)
(4190, 42741)
(9557, 41412)
(1437, 44090)


factorw BashmfimFw CJam, ...)