%
%
%
function[points]=ekgraph(p)

p=round(p);
points=[];

if isprime(p)==0
    disp(' ');
    disp('Eingabe muss eine Primzahl sein!');
    disp(' ');
    return;
end

if (or(p<5,p>299)==1)
    disp(' ');
    disp('Die Eingabe muss im Bereich 5 ... 299 liegen!');
    disp(' ');
    return;
end

x=[0:1:p-1];
ys=x.*(x.*x-ones(size(x)));
ys=mod(ys,p);

xp=[];
yp=[];

for (t=0:1:p-1)
    ts=mod(t*t,p);
    idx=find(ys==ts);
    if (isempty(idx)==0)
        xp=[xp x(idx)];
        yp=[yp t*ones(size(idx))];
    end
end

n=length(xp);

figure;
hold on;
%plot(x,ys,'ro','MarkerFaceColor','r');
plot(xp,yp,'bo','MarkerFaceColor','b');
grid on;
xlabel('x','FontWeight','bold','FontSize',12);
ylabel('y','FontWeight','bold','FontSize',12);
title(['y^2=x(x^2-1) für p=' num2str(p)],'FontWeight','bold','FontSize',12);
set(gca,'FontSize',12,'FontWeight','bold');

xlim(gca,[-ceil(p*0.05) p+ceil(p*0.05)]);
ylim(gca,[-ceil(p*0.05) p+ceil(p*0.05)]);

disp(' ');
disp(['Die Kurve besitzt ' num2str(n) ' Punkte.']);
disp(' ');

points=[xp' yp'];

for (k=1:1:size(points,1))
    disp(['Punkt ' num2str(k) ': x=' num2str(points(k,1)) ', y=' num2str(points(k,2))]);
end

return;