Bevezet\303\251s a matematik\303\241ba
J\303\241rai Antal
Ezek a programok csak szeml\303\251ltet\303\251sre szolg\303\241lnak.
2. Term\303\251szetes sz\303\241mok
8. Algebra
8.1. Csoportok
restart;with(group);
8.1.7. Reprezent\303\241ci\303\263k.
8.1.16. P\303\251ld\303\241k.
solve(z^6=1,z); G:=evalc([%]);
expand(evalc(1/G[3]));expand(evalc(G[2]*G[3]));
undefine('`&*`'); define('`&*`','multilinear','flat','identity'=1);
&*(i,i):=-1;&*(j,j):=-1;&*(k,k):=-1;&*(i,j):=k;&*(j,k):=i;&*(k,i):=j;&*(j,i):=-k;&*(k,j):=-i;&*(i,k):=-j;
(-1*i)&*(-1*k)=i&*k;
undefine('`&*`'); define('`&*`','flat','orderless','identity'=e);
&*(a,b):=c;&*(a,c):=b;&*(b,c):=a;&*(a,a):=e;&*(b,b):=e;&*(c,c):=e;
e&*a&*c&*b;
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.1.17. Geometriai p\303\251ld\303\241k.
D3:=grelgroup({tau,epsilon},{[epsilon,epsilon,epsilon],[tau,tau],[epsilon,tau,epsilon,tau]});
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
*8.1.32. P\303\251ld\303\241k: line\303\241ris transzform\303\241ci\303\263k csoportjai.
*8.1.77. Centraliz\303\241tor \303\251s centrum.
*8.1.78. Oszt\303\241lyegyenlet.
*8.1.79. P\303\251ld\303\241k.
*8.1.90. Projekt\303\255v csoportok.
*8.1.94. V\303\251gesen gener\303\241lt Abel-csoportok alapt\303\251tele.
8.1.101. Feladat: diszkr\303\251t direkt szorzat.
8.1.103. Permut\303\241ci\303\263csoportok.
convert([3,4,2,1,7,6,5],'disjcyc'); convert(%,'permlist',7);
undefine('`&*`'); `&*`:=(x,y)->mulperms(y,x);
g:=convert([3,4,2,1,7,6,5],'disjcyc');
h:=convert([2,5,3,4,1,7,6],'disjcyc');
f:=g&*h; convert(%,'permlist',7);
invperm(f); invperm(h)&*invperm(g);
S5:=permgroup(5,{[[1,2]],[[1,2,3,4,5]]}); grouporder(S5); isabelian(S5);
H1:=permgroup(5,{[[1,2,3,4,5]]}); grouporder(H1); isabelian(H1);
elements(H1);
gg:=RandElement(S5); H2:=permgroup(5,{gg}); grouporder(H2);
groupmember([[1,2,3,4,5]],H2); groupmember(gg,H2);
inter(H1,H2); issubgroup(H1,S5); issubgroup(H1,H2);
isnormal(H1,S5); isnormal(H2,S5); isnormal(H2,H1);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.1.105.K\303\266vetkezm\303\251ny.
*8.1.119. Defin\303\255ci\303\263.
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
M11:=permgroup(11,{[[1,2,3,4,5,6,7,8,9,10,11]],[[3,7,11,8],[4,10,5,6]]});
L:=[1,2];L[1]:=3;L;
grouporder(M11);
conjugateclasses:=proc(G) local GG,SS,p,i,f;
SS:=[]; GG:=elements(G);
for p in GG do
f:=false;
for i to nops(SS) do
if areconjugate(G,SS[i][1],p) and not p in SS[i] then
f:=true; SS[i]:=SS[i] union {p}; break;
fi;
od;
if not f then SS:=[op(SS),{p}]; fi;
od;
convert(SS,set);
end;
conjugateclasses(M11):nops(%);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.1.120. P\303\251lda.
S4:=permgroup(4,{[[1,2]],[[2,3]],[[3,4]]}); grouporder(S4);
elements(S4); A4:=permgroup(4,select(x->parity(x)=1,%)); grouporder(A4);
isnormal(A4,S4); cosets(S4,A4);
N1:=permgroup(4,{}); grouporder(N1);
N2:=permgroup(4,{[[1,2],[3,4]],[[1,3],[2,4]],[[1,4],[2,3]]});
grouporder(N2); isnormal(N2,A4); cosets(A4,N2);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.1.134. Tov\303\241bbi feladatok.
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.2. Gy\305\261r\305\261k \303\251s testek
restart;
*8.2.33. Reprezent\303\241ci\303\263k.
*8.2.46. Feladat: Stone t\303\251tele.
8.2.75. B\305\221v\303\255tett euklideszi algoritmus.
polynomexgcd:=proc(a,b,z) local x0,x1,x2,y0,y1,y2,r0,r1,r2,q;
x0:=1; y0:=0; r0:=a; x1:=0; y1:=1; r1:=b;
do
if r1=0 then return [x0,y0,r0] fi;
q:=quo(r0,r1,z); r2:=expand(r0-q*r1);
x2:=expand(x0-q*x1); y2:=expand(y0-q*y1);
r0:=r1; x0:=x1; y0:=y1; r1:=r2; x1:=x2; y1:=y2;
od; end;
debug(polynomexgcd);
polynomexgcd(z^3+z+1,z^2+2,z);
undebug(polynomexgcd);
polynomexgcd(z^3+z+1,z^2+2,z);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
*8.2.80. Maxim\303\241lis ide\303\241l.
8.2.88. K\303\266vetkezm\303\251ny.
8.2.98. Tov\303\241bbi feladatok.
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.3. Polinomok
restart;with(PolynomialTools);
8.3.7. Polinomf\303\274ggv\303\251nyek.
map(x->x mod 5,[0,1,2,3,4]); map(x->x^5 mod 5,[0,1,2,3,4]);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.3.14. Megjegyz\303\251s.
polydivisorx:=proc(a,b) local bb,db,r,dr,rr,rrr,q;
if a=0 then return true fi;
if b=0 then return false fi;
bb:=lcoeff(b); db:=degree(b); r:=a;
while degree(r)>=degree(b) do
rr:=lcoeff(r); dr:=degree(r); rrr:=irem(rr,bb,'q');
if rrr<>0 then return false fi;
r:=expand(r-q*b*x^(dr-db));
od; evalb(r=0); end;
debug(polydivisorx);
polydivisorx(4*x^2-1,2*x+1);
undebug(polydivisorx);
polydivisorx(4*x^2-1,2*x+1);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
*8.3.15. Megjegyz\303\251s: pszeudooszt\303\241s.
8.3.16. Megjegyz\303\251s: Horner-elrendez\303\251s.
Horner:=proc(L::list,c) local i,LL,r; LL:=[];
if nops(L)=0 then return LL,0 fi; r:=L[nops(L)];
for i from nops(L)-1 to 1 by -1 do
LL:=[r,op(LL)]; r:=L[i]+r*c;
od; LL,r; end;
p:=x^3+4*x^2-3*x+7; CoefficientList(p,x); Horner(%,2);
quo(p,x-2,x); rem(p,x-2,x);
convert(p,horner);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
*8.3.27. K\303\266roszt\303\241si polinomok.
*8.3.30. Megjegyz\303\251s.
8.3.32. K\303\266vetkezm\303\251ny.
8.3.41. P\303\251ld\303\241k.
Split(x^2+1,x);
p:=x^2+x+1; modpol(x^8+4*x^2,p,x,2); modpol(1/%,p,x,2);
modpol(%*%%,p,x,2);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.3.54. V\303\251ges testek elemsz\303\241ma.
8.3.55. Megjegyz\303\251sek.
8.3.57. Alkalmaz\303\241s: a Rijndael \303\251s AES blokkrejtjelz\305\221k.
lgn:=8; n:=2^lgn-1; RijndaelPoly:=Nextprime(Z^lgn,Z) mod 2; alpha:=Z;
C:=Matrix([[1,0,0,0,1,1,1,1],[1,1,0,0,0,1,1,1],[1,1,1,0,0,0,1,1],[1,1,1,1,0,0,0,1],[1,1,1,1,1,0,0,0],[0,1,1,1,1,1,0,0],[0,0,1,1,1,1,1,0],[0,0,0,1,1,1,1,1]]);c:=Vector([1,1,0,0,0,1,1,0]);
with(LinearAlgebra);
Cinv:=MatrixInverse(C) mod 2;
S:=proc(x) local i,xx; global RijndaelPoly,C,c;
xx:=convert(x,base,2);
xx:=add(xx[i]*Z^(i-1),i=1..nops(xx));
if xx<>0 then
xx:=modpol(1/xx,RijndaelPoly,Z,2)
else
xx:=modpol(xx,RijndaelPoly,Z,2)
fi;
xx:=CoefficientList(xx,Z);
while nops(xx)<8 do xx:=[op(xx),0] od;
xx:=convert(xx,Vector);
xx:=Multiply(C,xx) mod 2;
xx:=Add(xx,c) mod 2;
add(xx[i]*2^(i-1),i=1..8);
end;
S(0); S(1); S(2);
Sinv:=proc(x) local i,xx; global RijndaelPoly,Cinv,c;
xx:=convert(x,base,2);
while nops(xx)<8 do xx:=[op(xx),0] od;
xx:=convert(xx,Vector);
xx:=Add(xx,c,1,-1) mod 2;
xx:=Multiply(Cinv,xx) mod 2;
xx:=add(xx[i]*Z^(i-1),i=1..8);
if xx<>0 then xx:=modpol(1/xx,RijndaelPoly,Z,2) fi;
xx:=CoefficientList(xx,Z);
add(xx[i]*2^(i-1),i=1..nops(xx));
end;
Sinv(99); Sinv(124); Sinv(119);
X:=proc(x,y,b) local u,v,i,xx,yy; # bitwise xor in b bit length
xx:=convert(x,base,2); yy:=convert(y,base,2);
while nops(xx)<b do xx:=[op(xx),0] od;
while nops(yy)<b do yy:=[op(yy),0] od;
xx:=zip((u,v)->u+v mod 2,xx,yy);
add(xx[i]*2^(i-1),i=1..b);
end;
X(5,3,4);
Word2Bytes:=proc(x) local xx;
xx:=convert(x,base,256);
while nops(xx)<4 do xx:=[op(xx),0] od;
[xx[4],xx[3],xx[2],xx[1]];
end;
Bytes2Word:=proc(x) local i; add(x[i]*256^(4-i),i=1..4) end;
Bytes2Word([0,1,2,3]); Word2Bytes(%);
K:=["00010203","05060708","0A0B0C0D","0F101112"];K:=map(x->convert(x,decimal,hex),K);
RijndaelKeys:=proc(K,kk) local i,t,x,tt,k,KK,R; global RijndaelPoly;
k:=nops(K); KK:=K;
R:=1;
for i from k to kk-1 do
t:=KK[i];
if k>6 and (i mod k=4) then
t:=Word2Bytes(t);
t:=map(x->S(x),t);
t:=Bytes2Word(t);
fi;
if i mod k=0 then
t:=Word2Bytes(t);
t:=[t[2],t[3],t[4],t[1]];
t:=map(x->S(x),t);
tt:=CoefficientList(R,Z);
tt:=add(tt[i]*2^(i-1),i=1..nops(tt));
tt:=X(t[1],tt,8);
t:=[tt,t[2],t[3],t[4]];
R:=modpol(R*Z,RijndaelPoly,Z,2);
t:=Bytes2Word(t);
fi;
t:=X(t,KK[i-k+1],32);
KK:=[op(KK),t];
od;
KK;
end;
RijndaelKeys(K,8);
SubBytes:=proc(L) local x,y; global S;
map(x->map(y->S(y),x),L);
end;
SubBytesinv:=proc(L) local x,y; global Sinv;
map(x->map(y->Sinv(y),x),L);
end;
ShiftRow:=proc(L) local b,i,d,LL,LLL; b:=nops(L); LLL:=[];
if b>6 then d:=1 else d:=0 fi;
for i to b do
LL:=[L[i][1],L[1+(i mod b)][2],L[1+(i+1+d mod b)][3],L[1+(i+2+d mod b)][4]];
LLL:=[op(LLL),LL];
od; LLL;
end;
ShiftRow([[0,1,2,3],[10,11,12,13],[20,21,22,23],[30,31,32,33]]);
ShiftRowinv:=proc(L) local b,i,d,LL,LLL; b:=nops(L); LLL:=[];
if b>6 then d:=1 else d:=0 fi;
for i to b do
LL:=[L[i][1],L[1+(i-2 mod b)][2],L[1+(i-3-d mod b)][3],L[1+(i-4-d mod b)][4]];
LLL:=[op(LLL),LL];
od; LLL;
end;
ShiftRowinv([[0,1,2,3],[10,11,12,13],[20,21,22,23],[30,31,32,33]]);
normalizepolyzZ:=proc(p)
local i; global RijndaelPoly;
CoefficientList(expand(p) mod 2,z);
map(x->modpol(x,RijndaelPoly,Z,2),%);
add(%[i]*z^(i-1),i=1..nops(%)); sort(%); end;
RijndaelMixPoly:=(Z+1)*z^3+z^2+z+Z;
MixMul:=proc(L) local p,LL,x,i;
global RijndaelPoly,RijndaelMixPoly;
LL:=map(x->convert(x,base,2),L);
LL:=map(x->add(x[i]*Z^(i-1),i=1..nops(x)),LL);
p:=add(LL[i]*z^(i-1),i=1..4);
p:=p*RijndaelMixPoly;
p:=normalizepolyzZ(p);
while degree(p,z)>=4 do
p:=normalizepolyzZ(p-lcoeff(p,z)*z^(degree(p,z)-4)*(z^4+1) mod 2);
od;
LL:=CoefficientList(p,z);
while nops(LL)<4 do LL:=[op(LL),0] od;
map(x->subs(Z=2,x),LL);
end;
MixMul([1,1,1,1]); MixMul([219,19,83,69]); MixMul([242,10,34,92]);
MixMul([198,198,198,198]); MixMul([212,212,212,213]);
MixMul([45,38,49,76]);
RijndaelMixPolyinv:=(Z^3+Z+1)*z^3+(Z^3+Z^2+1)*z^2+(Z^3+1)*z+Z^3+Z^2+Z;
MixMulinv:=proc(L) local p,LL,x,i;
global RijndaelPoly,RijndaelMixPolyinv;
LL:=map(x->convert(x,base,2),L);
LL:=map(x->add(x[i]*Z^(i-1),i=1..nops(x)),LL);
p:=add(LL[i]*z^(i-1),i=1..4);
p:=p*RijndaelMixPolyinv;
p:=normalizepolyzZ(p);
while degree(p,z)>=4 do
p:=normalizepolyzZ(p-lcoeff(p,z)*z^(degree(p,z)-4)*(z^4+1) mod 2);
od;
LL:=CoefficientList(p,z);
while nops(LL)<4 do LL:=[op(LL),0] od;
map(x->subs(Z=2,x),LL);
end;
MixMulinv([1,1,1,1]); MixMulinv([142,77,161,188]);
MixMulinv([159,220,88,157]); MixMulinv([198,198,198,198]);
MixMulinv([213,213,215,214]); MixMulinv([77,126,189,248]);
Rijndael:=proc(M::list(posint),K::list(posint),r::posint)
local i,j,k,m,KK,MM,MMM; k:=nops(K); m:=nops(M); MMM:=[];
KK:=RijndaelKeys(K,m*(r+1));
for j to m do
MMM:=[op(MMM),X(KK[j],M[j],32)];
od;
for i from 2 to r do
MM:=map(x->Word2Bytes(x),MMM);
MM:=SubBytes(MM);
MM:=ShiftRow(MM);
MM:=map(x->MixMul(x),MM);
MM:=map(x->Bytes2Word(x),MM);
MMM:=[];
for j to m do
MMM:=[op(MMM),X(KK[(i-1)*m+j],MM[j],32)];
od;
od;
MM:=map(x->Word2Bytes(x),MMM);
MM:=SubBytes(MM);
MM:=ShiftRow(MM);
MM:=map(x->Bytes2Word(x),MM);
MMM:=[];
for j to m do
MMM:=[op(MMM),X(KK[r*m+j],MM[j],32)];
od;
MMM;
end;
M:=["506812A4","5F08C889","B97F5980","038B8359"];
M:=map(x->convert(x,decimal,hex),M);
Rijndael(M,K,10);
Rijndaelinv:=proc(M::list(posint),K::list(posint),r::posint)
local i,j,k,m,KK,MM,MMM; k:=nops(K); m:=nops(M); MMM:=[];
KK:=RijndaelKeys(K,m*(r+1));
for j to m do
MMM:=[op(MMM),X(KK[r*m+j],M[j],32)];
od;
MM:=map(x->Word2Bytes(x),MMM);
MM:=ShiftRowinv(MM);
MM:=SubBytesinv(MM);
MM:=map(x->Bytes2Word(x),MM);
for i from r to 2 by -1 do
MMM:=[];
for j to m do
MMM:=[op(MMM),X(KK[(i-1)*m+j],MM[j],32)];
od;
MM:=map(x->Word2Bytes(x),MMM);
MM:=map(x->MixMulinv(x),MM);
MM:=ShiftRowinv(MM);
MM:=SubBytesinv(MM);
MM:=map(x->Bytes2Word(x),MM);
od;
MMM:=[];
for j to m do
MMM:=[op(MMM),X(KK[j],MM[j],32)];
od;
MMM;
end;
CM:=["D8F53253","8289EF7D","06B506A4","FD5BE9C9"];
CM:=map(x->convert(x,decimal,hex),CM);
Rijndaelinv(CM,K,10);
M:=["506812A4","5F08C889","B97F5980","038B8359"];
M:=map(x->convert(x,decimal,hex),M);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.3.60. K\303\266vetkezm\303\251ny.
8.3.61. K\303\266vetkezm\303\251ny.
*8.3.69. Legnagyobb k\303\266z\303\266s oszt\303\263 sz\303\241mol\303\241sa Gauss-gy\305\261r\305\261 feletti polinomgy\305\261r\305\261 eset\303\251n.
*8.3.79. Megjegyz\303\251sek.
8.3.82. Lagrange-interpol\303\241ci\303\263.
with(CurveFitting);
PolynomialInterpolation([[0,2],[1,4],[3,7],[4,5]],x);
PolynomialInterpolation([[0,2],[1,4],[3,7],[4,5]],x,form=Lagrange);
8.3.83. Titokmegoszt\303\241s.
p:=nextprime(10^50);
t:=12345678901234567890123456789012345678901234567890;
P:=t+94536789321234890676867542309176345623498734562349*x+79888998766657439865923165346578934524359870127935*x^2 mod p;
y1:=subs(x=1,P) mod p;
y2:=subs(x=2,P) mod p;
y3:=subs(x=3,P) mod p;
y4:=subs(x=4,P) mod p;
y5:=subs(x=5,P) mod p;
Interp([1,3,5],[y1,y3,y5],x) mod p;
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
8.3.85. Kronecker-elj\303\241r\303\241s.
with(combinat);
with(numtheory);
Kroneckerfactorx:=proc(p) local d,D,pp,i,X,Y,v,V,c,q,y;
pp:=expand(p);
if pp=0 then return [0] fi;
if pp=1 then return [] fi;
if pp=-1 then return [-1] fi;
D:=degree(pp); X:=[]; Y:=[]; i:=0;
while nops(X)<=floor(D/2) do
v:=subs(x=i,pp);
if v=0 then return [x-i,op(Kroneckerfactorx(quo(pp,x-i,x)))] fi;
V:=divisors(v); V:=V union map(y->-y,V);
V:=[op(V)]; V:=sort(V,(u,v)->abs(u)<abs(v));
X:=[op(X),i]; Y:=[op(Y),V];
if i<=0 then i:=1-i else i:=-i fi;
od;
for d from 0 while D>=2*d do
y:=cartprod(Y[1..d+1]);
while not y[finished] do
q:=PolynomialInterpolation(X[1..d+1],y[nextvalue](),x);
if q=1 or q=-1 then next fi;
if polydivisorx(pp,q) then
return [q,op(Kroneckerfactorx(quo(pp,q,x)))] fi;
od;
od; [pp]; end;
debug(Kroneckerfactorx);
p:=x^5-2*x^4-2*x^3+4*x^2+x-2; Kroneckerfactorx(p);
undebug(Kroneckerfactorx);
Kroneckerfactorx(6*x^2+12*x+12);
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
*8.3.93. Testb\305\221v\303\255t\303\251sek.
*8.3.95. Feladat: testb\305\221v\303\255t\303\251sek.
*8.3.104. Feladat: szerkeszthet\305\221s\303\251g.
8.3.110. V\303\251ges testek alapt\303\251tele.
8.3.111. Wedderburn t\303\251tele.
*8.3.112. Polinomfaktoriz\303\241l\303\241s v\303\251ges testek felett.
*8.3.113. Magasabb fok\303\272 kongruenci\303\241k.
*8.3.116. Megjegyz\303\251s.
8.3.132. Megjegyz\303\251s.
8.3.142. Tov\303\241bbi feladatok megold\303\241sokkal.
8.3.143. Tov\303\241bbi feladatok.
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn