Advertisement
icatalin

cmmdc clasa

Nov 23rd, 2015
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5. int v[100],n;
  6.  
  7. void citire(int st, int dr)
  8. {
  9.     if(st==dr)
  10.         cin>>v[st];
  11.         else
  12.         {
  13.             int mij=(st+dr)/2;
  14.             citire(st,mij);
  15.             citire(mij+1,dr);
  16.         }
  17. }
  18. int cmmdc(int a, int b)
  19. {
  20.     if(a==0 || b==0)
  21.         return max(a,b);
  22.     int r=a%b;
  23.     while(r)
  24.     {
  25.         a=b;
  26.         b=r;
  27.         r=a%b;
  28.     }
  29.     return b;
  30. }
  31. /*int cmmdcr(int a, int b)
  32. {
  33.     if(a==0||b==0)
  34.         return max(a,b);
  35.     else
  36.         if(b==0)
  37.         return a;
  38.     else return cmmdcr(b,a%b);
  39. }*/
  40. int nr_prim(int st, int dr,int x)
  41. {
  42.     if(st==dr)
  43.     {
  44.         if(x%st==0)
  45.             return 1;
  46.         else return 0;
  47.     }
  48.     else
  49.         return nr_prim(st,(st+dr)/2,x)+nr_prim((st+dr)/2+1,dr,x);
  50. }
  51. int cmmdcdv(int st,int dr)
  52. {int a,b,mij=(st+dr)/2;
  53.     if(st==dr)
  54.         return v[st];
  55.     else
  56.     {
  57.         a=cmmdcdv(st,mij);
  58.         b=cmmdcdv(mij+1,dr);
  59.         return cmmdc(a,b);
  60.     }
  61. }
  62. int main()
  63. {
  64.     cin>>n;
  65.     citire(1,n);
  66.     int d=cmmdcdv(1,n);
  67.     if(d<=1)
  68.     {
  69.         cout<<"NU";
  70.         return  0;
  71.     }
  72.     else
  73.         if(d<=3)
  74.     {
  75.         cout<<"DA";
  76.         return 0;
  77.     }
  78.     if(nr_prim(2,sqrt(d),d))
  79.         cout<<"NU";
  80.     else cout<<"DA";
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement