Méthode par division : (np.m)
Le principe de la méthode par division :
Pour N entier donné on va regarder, après avoir initialisé un vecteur
p (p(1)=1, p(2)=2, p(3)=3), si le nombre k (partant de 4 à N) est divisible
par tout les nombres premiers inférieurs à lui-même : s’il ne l’est pas
alors k est premier et est rajouté à la liste p des nombres premiers, sinon
on ne fait rien et on passe à k+1.
Le code correspondant est :
function np=np(n)
%--Affichage d’un vecteur contenant tout les nombres premiers
% de 3 à n.
%--Input : N entier strictement positif.
%--Output : le vecteur en question.
%--Initialisation :
np(1)=1;
np(2)=2;
np(3)=3;
l=3;
%--Boucle :
for k=5:2:n %--de 5 à n par pas de 2 on ne
d=0; % regarde que les nombres
for i=3:l % impairs.
if (mod(k,np(i)))==0 %--critère de divisibilité.
d=1;
break
end
end
if d==0
l=l+1; %--incrémentation de l et
np(l)=k; % écriture de k à la l-ème
end % place.
End %--écriture du vecteur np.
Construction de carrés magiques : (magic.m)
Une des méthodes de construction que nous allons utiliser est
seulement valable au cas N entier naturel impair.
Algorithme de construction :
Pour un carré de taille N on remplit préalablement notre matrice de
zéros (N² zéros) puis on se place à la (N+1)/2 ème ligne et (N+3)/2 ème
colonne et on écrit 1. Supposons maintenant que nous soyons à l’étape k,
ayant écrit la (k-1)-ème valeur dans la case adaptée. A l’étape suivante
nous allons décrémenter i (indice de ligne) et incrémenter j (indice de
colonne) et regarder si la case contient un zéro : si oui on écrit la valeur
suivante k, sinon on incrémente i et incrémente j encore une fois et on
écrit la valeur k à la nouvelle case obtenue. L’algorithme se poursuit