> with(numtheory): > n:=1234567; n := 1234567 > isprime(n); false > for a from 2 to n-1 while a&^(n-1) mod n = 1 do > end do: > a; 2 > a&^(n-1) mod n; 899557 > ## o n legetai pseudoprwtos ws pros th bash a an (a,n)=1 kai a^(n-1) mod n =1 > > fermat_witness:=proc(n,a) > if igcd(a,n)=1 and a&^(n-1) mod n<>1 then RETURN(1) > else RETURN(0) > end if: > end proc: > > ## o n legetai ari8mos tou Carmichael an einai pseudoprwtos ws pros > ## ka8e bash 2 <= a <= n-1 me (a,n)=1 kai den einai prwtos > > is_carmichael:=proc(n) > local a: > for a from 2 to n-1 do > if fermat_witness(n,a)=1 then RETURN(0) > end if: > end do: > RETURN(1): > end proc: > > S:={}; S := {} > for n from 3 to 2000 do > if is_carmichael(n)=1 then S:=S union {n} > end if: > end do: > > P:={}; P := {} > for n from 3 to 2000 do > if isprime(n) then P:= P union {n} > end if: > end do: > S minus P; {561, 1105, 1729} >