Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int rishoni(unsigned long n1)
  4. {
  5.  
  6. int tmp=1;
  7. for(int i=2;i<n1&&tmp==1;i++)
  8. {
  9. if(n1%i==0)
  10. tmp=0;
  11.  
  12. }
  13. return tmp;
  14. }
  15.  
  16. int *prime_multipliers(unsigned long n, int *len )
  17. {
  18. *len=0;
  19. unsigned long n1=n;
  20. int count=1;
  21. int i=2;
  22. while(n1!=1)
  23. {
  24. if(rishoni(i)==1)
  25. {
  26. if(n1%i==0)
  27. {
  28. while(n1%i==0)
  29. {
  30. n1=n1/i;
  31. count++;
  32. }
  33. }
  34.  
  35. }
  36. i++;
  37. }
  38. int* a=(int*)malloc(count * sizeof(int));
  39. a[0]=1;
  40. i=2;
  41. int tmp=1;
  42. while(n!=1)
  43. {
  44. if(rishoni(i)==1)
  45. {
  46. if(n%i==0)
  47. {
  48. while(n%i==0)
  49. {
  50. n=n/i;
  51. a[tmp]=i;
  52. tmp++;
  53. }
  54. }
  55.  
  56. }
  57. i++;
  58. }
  59. *len=count;
  60. free(a);
  61. return a;
  62.  
  63. }
  64.  
  65.  
  66. unsigned long gcd_2(int a1[], int len1, int a2[], int len2)
  67. {
  68.  
  69.  
  70. int n1=1;
  71. int n2=1;
  72. for(int i=0;i<len1;i++)
  73. {
  74. n1=n1*a1[i];
  75. }
  76. for(int i=0;i<len2;i++)
  77. {
  78. n2=n2*a2[i];
  79. }
  80. int tmp=0;
  81.  
  82. int* a=(int*)malloc(n1 * sizeof(int));
  83. for(int i=1;i<n1;i++)
  84. {
  85. if(n1%i==0)
  86. {
  87. a[tmp]=i;
  88. tmp++;
  89.  
  90. }
  91.  
  92. }
  93. a[tmp]=n1;
  94. unsigned long k=1;
  95. for(int i=tmp;i>=0;i--)
  96. {
  97. if(n2%a[i]==0)
  98. {
  99. k=a[i];
  100. i=-1;
  101. }
  102. }
  103. return k;
  104.  
  105. }
  106.  
  107. unsigned long gcd_array(unsigned long data[],int n)
  108. {
  109. int n1=data[0];
  110. unsigned long* a=(unsigned long*)malloc(n1 * sizeof(unsigned long));
  111. for(int i=0;i<n1;i++)
  112. {
  113. a[i]=0;
  114. }
  115. int tmp=0;
  116. for(int i=1;i<n1;i++)
  117. {
  118. if(n1%i==0)
  119. {
  120. a[tmp]=i;
  121. tmp++;
  122. }
  123. }
  124. a[tmp]=n1;
  125.  
  126. unsigned long k=0;
  127. int flag=1;
  128. for(int i= tmp; i>=0; i--)
  129. {
  130. flag=1;
  131. for(int j=1;j<n && flag==1;j++)
  132. if(data[j]%a[i]!=0)
  133. {
  134. flag=0;
  135. }
  136. if(flag==1)
  137. {
  138. k=a[i];
  139. i=-1;
  140. }
  141. }
  142. return k;
  143. }
  144.  
  145. int main()
  146. {
  147. printf("Please enter the array : \n");
  148. int m;
  149. scanf("%d",&m);
  150. unsigned long* a=(unsigned long*)malloc(m * sizeof(unsigned long));
  151. for(int i=0;i<m;i++)
  152. {
  153. unsigned long n1;
  154. scanf("%lu",&n1);
  155. a[i]=n1;
  156. }
  157. unsigned long k=gcd_array(a,m);
  158. printf("The gcd is %lu\n",k);
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement