Nous allons représenter les 40 000 premiers entiers non nuls sur une image de 20 pixels × 20 pixels; les entiers sont rangés de gauche à droite et de haut en bas. Chaque entier premier sera représenté par un pixel blanc…
On utilisera la fonction isprime() qui appliquée à un nombre et plus généralement à une matrice
donne 1 si le nombre est premier et 0 sinon. En multipliant par 255, on aura la matrice d'une image avec des pixels
blanc (255) et des pixels noirs (0).
n=200;
#construction de la matrice 20x20
E=zeros(n,n);
for a=1:n,
for b=1:n,
E(a,b)=(a-1)*n+b;
end
end
#test de primalité
E=isprime(E);
#construction de l'image
E=uint8(255*E);
imwrite("prim200.png",E)Remarque : en supprimant la ligne E=uint8(255*E);, on obtient le même résultat… pourquoi?
Avant de construire l'image, donc de multiplier par 255, nous insérons les commandes suivantes :
s=(sum(E));
p=find(s==max(s));
k=s(p);
printf("la colonne %i est celle qui contient le plus \n de nombres premiers soit %i" ,p,k)la première ligne fait la somme de chaque colonne, la deuxième cherche la colonne dont la somme des 1, donc des nombres premiers est la plus grande; la troisième donne la somme correspondante et la quatrième affiche le résultat.
On obtient :
fait le 19 août 2008