Créer la fonction PHI (cryptographie)
Discutez d'informatique ici !
-
kyuorochi
- Messages: 4
- Enregistré le: 09 Déc 2012, 19:20
-
par kyuorochi » 09 Déc 2012, 19:23
salut,
je suis un débutant dans matlab, je veux créer ma propre fonction sous l'intitulé PHI, cette fonction s'applique à un nombre entier x, et retourne le nombre des élément qui appartiennent à [1:1x-1)] qui sont des co-premiers avec le x
exemple:
x=12;
PHI(x)= 4
%puisque les élément qui appartient à[1:1:11] qui sont
% co-premiers avec le 12 sont: (1,5,7,11)
Remarque: g essayé de la traiter avec le pgcd(x,b(i)) mais j'arrive pas à trouver la solution
je suis pas sur, mais cette fonction est pour EULER dans le domaine de la cryptographie
Merci d'avance
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 09 Déc 2012, 19:28
salut,
c'est quoi un nombre co premier?
la vie est une fête

-
kyuorochi
- Messages: 4
- Enregistré le: 09 Déc 2012, 19:20
-
par kyuorochi » 09 Déc 2012, 19:44
fatal_error a écrit:salut,
c'est quoi un nombre co premier?
a et b sont co-premiers => pgcd(a,b) = 1
pgcd = le grand diviseur commun de a et b et 1
par exemple: pgcd(10,7)=1 ==> 10 et 7 co-premiers
pgcd(12,4)=4 ==> 12 et 4 ne sont pas co-premiers
Merci pr votre réponse
-
Iroh
- Membre Relatif
- Messages: 374
- Enregistré le: 14 Oct 2008, 19:24
-
par Iroh » 09 Déc 2012, 19:59
Salut,
Tu veux quelque chose de ce genre :
- Code: Tout sélectionner
function y = phi (x)
y = 0;
for i = 1:x-1
if gcd (x, i) == 1
y = y + 1;
end
end
end
-
kyuorochi
- Messages: 4
- Enregistré le: 09 Déc 2012, 19:20
-
par kyuorochi » 09 Déc 2012, 20:06
Iroh a écrit:Salut,
Tu veux quelque chose de ce genre :
- Code: Tout sélectionner
function y = phi (x)
y = 0;
for i = 1:x-1
if gcd (x, i) == 1
y = y + 1;
end
end
end
Oui c exactement ce que je veux, je vais te montrer ma solution
Merci
-
kyuorochi
- Messages: 4
- Enregistré le: 09 Déc 2012, 19:20
-
par kyuorochi » 09 Déc 2012, 20:16
%%% tester la fonction phi d'abord %%%
clear all;
clc
%function k = phi(x)
x=4
b=[1:(x-1)] %lés éléments qu'on veut les tester de 1 à 3
for i=1:length(b) %length(b) = 3
while (b(i)~=0) % ça c l'algo d'Euclide pr PGCD
r=mod(x,b(i))
x=b(i)
b(i)=r
end
pgcd=x % finalement pgcd est un vecteur qui contient
end % les pgcd des élément 1 2 et 3 avec 4
% le problém est ici puisque normalement le pgcd =(1,2,1)
% j'arrive pas à trouver cette solution psk le probléme est
% dans le x, cet algo marche bien si b un seul nombre est pas
% un vecteur
k=0;
for i=1:length(pgcd)
if pgcd(i)=1
k=k+1
end
end
k % Résultat final PHI(x)=k
% normalement k=2
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 09 Déc 2012, 21:12
tu appliques ton algo pour tous les éléments de b.
Donc comme tu modifies x dans ta boucle while, il faut que tu réinitialises x à chaque nouvel élément b(i) de ta boucle for.
savedXValue=x
for i=1:length(b) %length(b) = 3
x=savedXValue
while (b(i)~=0) % ça c l'algo d'Euclide pr PGCD
r=mod(x,b(i))
x=b(i)
b(i)=r
end
la vie est une fête

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités