fork(2) download
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <cmath>
  5. #include <cstdlib>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <numeric>
  9.  
  10. using namespace std;
  11.  
  12. vector <int> czynniki_pierwsze(int x){
  13. vector <int> result;
  14. for(int i=2;i<=x;i++){
  15. if(x%i == 0){
  16. result.push_back(i);
  17. x=x/i;
  18. i--;
  19. }
  20. }
  21. return result;
  22. }
  23.  
  24. int wspolny_czynnik(vector <int> x, vector <int> y){
  25. vector <int> result;
  26. vector <int> bigger;
  27. vector <int> smaller;
  28. if(x.size() > y.size()){
  29. bigger = x;
  30. smaller = y;
  31. }
  32. else{
  33. bigger = y;
  34. smaller = x;
  35. }
  36.  
  37. for(int i=0; i<bigger.size(); i++) {
  38. result.push_back(bigger[i]);
  39. }
  40. for(int k=0; k<smaller.size(); k++) {
  41. vector <int>::iterator it = find(bigger.begin(), bigger.end(), smaller[k]);
  42. if(it == bigger.end()){
  43. result.push_back(smaller[k]);
  44. }
  45. }
  46. int wynik = std::accumulate(result.begin(), result.end(), 1, std::multiplies<int>());
  47. return wynik;
  48.  
  49. }
  50.  
  51. int main(){
  52.  
  53. int n;
  54. cin >> n;
  55. while(n > 0){
  56. int a, b;
  57. cin >> a;
  58. cin >> b;
  59. vector <int> czynniki_a = czynniki_pierwsze(a);
  60. vector <int> czynniki_b = czynniki_pierwsze(b);
  61. int nwc = wspolny_czynnik(czynniki_a, czynniki_b);
  62. cout << nwc << endl;
  63. n--;
  64. }
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0s 15240KB
stdin
8
10 12
12 15
23 27
18 23
30 30
20 20
29 29
28 12
stdout
60
60
621
414
30
20
29
84