Bonjour,
Ton code présente un problème: lorsqu'il y a effectivement des valeurs divisibles par a, b ou c, la taille de ton vecteur diminue, et de ce fait la boucle for ne peux plus aller jusqu'à n (longueur initiale de ton vecteur) et tu obtiens une erreur "index out of bounds".
Pour remédier à ce problème, tu peux passer soit par une boucle while
1 2 3 4 5 6 7 8
| i = 1;
while i<=length(x)
if rem(x(i),a)==0 || rem(x(i),b)==0 || rem(x(i),c)==0
x(i)=[];
else
i = i+1;
end
end |
Soit juste remplacer ta ligne for par
Je te propose aussi un code optimisé utilisant l'indexage logique:
x(~rem(x,a) | ~rem(x,b) | ~rem(x,c)) = [];
Partager