Créer la fonction PHI (cryptographie)

Discutez d'informatique ici !
kyuorochi
Messages: 4
Enregistré le: 09 Déc 2012, 19:20

créer la fonction PHI (cryptographie)

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



Avatar de l’utilisateur
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

Avatar de l’utilisateur
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 :)

 

Retourner vers ϟ Informatique

Qui est en ligne

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

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite