fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int min(int,int);
  5.  
  6. int min_prime(int);
  7.  
  8. int gcd(int,int);
  9.  
  10. int main(){
  11.  
  12. int i,j,t,g;
  13. int n=0;
  14. int *a;
  15. scanf("%d\n",&t);
  16.  
  17. while(t-- > 0){
  18. scanf("%d\n",&n);
  19. a=(int*)malloc(sizeof(int)*(n));
  20. for(i=0;i<n;i++){
  21. scanf("%d",a+i);
  22. }
  23. g=a[0];
  24. for(i=1;i<n;i++){
  25. g=gcd(g,a[i]);
  26. }
  27. // printf("The gcd %d\n",g);
  28. if(g==1)
  29. printf("%d\n",-1);
  30. else
  31. printf("%d\n",min_prime(g));
  32. free(a);
  33. }
  34.  
  35.  
  36. //getch();
  37. return 0;
  38.  
  39. } int min(int a,int b){
  40.  
  41. if(a>b)
  42. return b;
  43. else
  44. return a;
  45.  
  46. }
  47.  
  48. int gcd(int a,int b){
  49.  
  50. if(b==0)
  51. return a;
  52. else
  53. a=gcd(b,a%b);
  54.  
  55. //printf("The gcd:%d",a);
  56. return a;
  57.  
  58. }
  59. int min_prime(int n) {
  60. int i;
  61. if(n%2==0)
  62. return 2;
  63. for(i=3;i<=sqrt(n);i++) {
  64. if(n%i==0)
  65. return i;
  66. }
  67. if(n>2)
  68. return n;
  69. }
Success #stdin #stdout 0s 2188KB
stdin
1
3
7 7 7
stdout
7