AKS test for primes: Difference between revisions
Content added Content deleted
(add RPL: improved display of (x-1)^p) |
imported>Maxima enthusiast No edit summary |
||
Line 3,114: | Line 3,114: | ||
primes under 50 |
primes under 50 |
||
{1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47}</pre> |
{1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47}</pre> |
||
=={{header|Maxima}}== |
|||
<syntaxhighlight lang="maxima"> |
|||
/* Function that lists coefficients given the exponent */ |
|||
pol_to_list(n):=if n=0 then [1] else block(pol:expand((x-1)^n), |
|||
makelist(numfactor(part(pol,i)),i,1,length(pol)))$ |
|||
/* Function to expand the polynomial (x-1)^n */ |
|||
expansion(n):=block( |
|||
coeflist:pol_to_list(n), |
|||
makelist(x^(length(%%)-i),i,1,length(%%)), |
|||
%%*coeflist, |
|||
apply("+",%%))$ |
|||
/* AKS based predicate function */ |
|||
aks_primep(n):=if n=1 then false else block(sample:expansion(n)-(x^n-1), |
|||
makelist(numfactor(part(sample,i)),i,1,length(sample)), |
|||
if not member(false,makelist(integerp(%%[i]/n),i,1,length(%%))) then true)$ |
|||
/* Test cases */ |
|||
makelist(expansion(i),i,0,7); |
|||
block( |
|||
makelist(aks_primep(i),i,1,50), |
|||
sublist_indices(%%,lambda([x],x=true))); |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
[1,x-1,x^2-2*x+1,x^3-3*x^2+3*x-1,x^4-4*x^3+6*x^2-4*x+1,x^5-5*x^4+10*x^3-10*x^2+5*x-1,x^6-6*x^5+15*x^4-20*x^3+15*x^2-6*x+1,x^7-7*x^6+21*x^5-35*x^4+35*x^3-21*x^2+7*x-1] |
|||
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47] |
|||
</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |