Zadanie
Napisz funkcję, która akceptuje dwie liczby całkowite a,b
reprezentują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+ib
jest 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:
a
ib
oba są niezerowe ia^2 + b^2
są liczbą pierwsząa
wynosi zero,|b|
jest liczbą pierwszą i|b| = 3 (mod 4)
b
wynosi 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 isprime
lub prime_list
lub nthprime
lub factor
. Najmniejsza liczba bajtów wygrywa. Praca programu musi na a,b
którym a^2+b^2
jest 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)
factor
w Bashmf
imF
w CJam, ...)