Advertisement
a53

FUNCTII_indic_lui_Euler-SI_cmmdc

a53
Oct 22nd, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. int phi(int n) /// Functia Totient (indicatorul lui Euler)
  2. { /// Intoarce numarul de numere naturale mai mici decat n si prime cu n
  3. float rezultat=n; /// Initializa rezultat cu n
  4. for(int p=2;p*p<=n;++p) /// Consideram toti factorii primi ai n si pentru fiecare factor prim p, multiplicam rezultatul cu (1-1/p)
  5. {
  6. if(n%p==0) /// Verificam daca p este factor prim
  7. {
  8. while (n%p==0) /// Daca da, actualizam n si rezultatul
  9. n/=p;
  10. rezultat*=(1.0-(1.0/(float) p));
  11. }
  12. }
  13. if (n>1) /// Daca n are un factor mai mare decat sqrt(n) (poate exista cel mult un astfel de factor prim)
  14. rezultat*=(1.0-(1.0/(float) n));
  15. return (int)rezultat;
  16. }
  17.  
  18. int cmmdc(int a,int b)
  19. {
  20. int r=a%b;
  21. while(r!=0)
  22. a=b,b=r,r=a%b;
  23. return b;
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement