HP Forums
Complex Prime Number Test - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: HP Prime Software Library (/forum-15.html)
+--- Thread: Complex Prime Number Test (/thread-2415.html)



Complex Prime Number Test - Eddie W. Shore - 11-11-2014 06:09 PM

Program:
Code:
EXPORT cisprime(z)
BEGIN
// 2014-11-09 EWS
LOCAL a,b,r,t;
a:=RE(z);
b:=IM(z);
r:=a^2+b^2;
IF CAS.isPrime(r)==1 THEN
t:=1; END;
IF a==0 AND ABS(b) MOD 4==3 AND CAS.isprime(ABS(b))==1 THEN
t:=1; END;
IF b==0 AND ABS(a) MOD 4==3 AND CAS.isprime(ABS(a))==1 THEN
t:=1; END;
RETURN t;
END;
(Edited 2014-11-13, see the thread - thanks Joe and Thomas!)


Examples:
cisprime(2-4*i) returns 0
cisprime(-2+5*i) returns 1

Source: http://mathworld.wolfram.com/GaussianPrime.html


RE: Complex Prime Number Test - Jim Horn - 11-12-2014 04:41 PM

Wow - never heard of those before. Thanks for teaching us!

I am puzzled - your program tests for 3mod4 of the non-zero component if the other is zero, but doesn't test the non-zero component for primality. So, for example, 0+/- 15i isn't a Gaussian prime as 15 isn't prime. Am I mistaken?


RE: Complex Prime Number Test - Thomas Klemm - 11-12-2014 05:31 PM

(11-12-2014 04:41 PM)Jim Horn Wrote:  I am puzzled - your program tests for 3mod4 of the non-zero component if the other is zero, but doesn't test the non-zero component for primality. So, for example, 0+/- 15i isn't a Gaussian prime as 15 isn't prime. Am I mistaken?

Quote:If a=0, then bi is a Gaussian prime iff |b| is an ordinary prime and |b|=3 (mod 4).

Thus 15i is not a Gaussian prime since 15 is not an ordinary prime.
However 5 is not a Gaussian prime though it is an ordinary prime since |5|=1 (mod 4).
The complex factors of 5 are (2 + i)(2 − i).

HTH
Thomas


RE: Complex Prime Number Test - Eddie W. Shore - 11-13-2014 01:23 PM

(11-12-2014 05:31 PM)Thomas Klemm Wrote:  
(11-12-2014 04:41 PM)Jim Horn Wrote:  I am puzzled - your program tests for 3mod4 of the non-zero component if the other is zero, but doesn't test the non-zero component for primality. So, for example, 0+/- 15i isn't a Gaussian prime as 15 isn't prime. Am I mistaken?

Quote:If a=0, then bi is a Gaussian prime iff |b| is an ordinary prime and |b|=3 (mod 4).

Thus 15i is not a Gaussian prime since 15 is not an ordinary prime.
However 5 is not a Gaussian prime though it is an ordinary prime since |5|=1 (mod 4).
The complex factors of 5 are (2 + i)(2 − i).

HTH
Thomas

Thomas,

Thanks for pointing out the glaring omission - much appreciated. The edited algorithm should be correct now.

Eddie