recherche des nombres premiers entre eux (coprime en anglais) en utilisant le code donné ici : Algorithme d'Euclide et "plus grand commun diviseur"
Cette fonction renvoie un tableau booléen (vrai/faux) si les nombres correspondants dans les deux tableaux d'entrée sont premiers entre eux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function iscp = iscoprime(a,b) %ISCOPRIME % % Author : Jerome Briot (Dut) % Contact : dutmatlab#yahoo#fr -or- briot#cict#fr % Profil : www.mathworks.com/matlabcentral/newsreader/author/94805 % : www.developpez.net/forums/u125006/dut/ % % Version : 1.0 - 04 Sep 2009 % % MATLAB : 7.6.0.324 (R2008a) % System : Linux 2.6.24-24-generic % error(nargchk(2,2,nargin)); b = findgcd(a,b); iscp = b==1;
Tout simplement
Une petite démo :
Pour n = 1, la demo retourne le tableau suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 function demoiscoprime(n) %ISCOPRIME % % Author : Jerome Briot (Dut) % Contact : dutmatlab#yahoo#fr -or- briot#cict#fr % Profil : www.mathworks.com/matlabcentral/newsreader/author/94805 % : www.developpez.net/forums/u125006/dut/ % % Version : 1.0 - 04 Sep 2009 % % MATLAB : 7.6.0.324 (R2008a) % System : Linux 2.6.24-24-generic % error(nargchk(0,1,nargin)); if nargin == 0 n = 2; end if n == 1 a = [6 27 8 2 0 1268 462 25]; b = [35 6 0 4 0 1254 1071 6]; gcd = findgcd(a,b); iscp = iscoprime(a,b); sprintf('%5d %5d %5d %5d %5d %5d %5d %5d\n',[a;b;gcd;iscp].') else a = 1:75; b = 1:75; [x,y] =meshgrid(a,b); iscp = iscoprime(x,y); figure('color','w','numbertitle','off','toolbar','none',... 'name','ISCOPRIME Demo') spy(iscp,'ko'); h = findobj('type','line'); set(h,'markerfacecolor','k') axis equal tight end
La troisième ligne contient le plus grand commun diviseur entre chaque élément de la première ligne et celui de la seconde lui correspondant. La quatrième renvoie 1 si les termes sont premiers entre eux, deux à deux et 0 dans le cas contraire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 6 27 8 2 0 1268 462 25 35 6 0 4 0 1254 1071 6 1 3 -1 2 -1 2 21 1 1 0 0 0 0 0 0 1
Pour n = 2, la démo renvoie la figure attachée en pièce jointe.
Chaque point noir correspond à un couple de l'intervalle [1:75,1:75] de nombres premiers entre eux.
Voila... si vous avez des remarques, des questions ou des suggestions, n'hésitez pas
Mais rappelez-vous que je ne suis pas un spécialiste dans ce domaine
Note : Ne sachant pas si ces codes sont justes, je ne les ai pas optimisés (et donc pas commentés)
Partager