fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4.  
  5. ll modmul(ll a, ll b, ll m){
  6. return (__int128)a * b % m;
  7. }
  8.  
  9. ll modpow(ll a, ll d, ll m){
  10. ll r = 1;
  11. while(d){
  12. if(d & 1) r = modmul(r, a, m);
  13. a = modmul(a, a, m);
  14. d >>= 1;
  15. }
  16. return r;
  17. }
  18.  
  19. bool miller(ll n){
  20. if(n < 2) return false;
  21. for(ll p : {2,3,5,7,11,13,17,19,23,29,31,37})
  22. if(n % p == 0) return n == p;
  23. ll d = n - 1, s = 0;
  24. while((d & 1) == 0) d >>= 1, s++;
  25. for(ll a : {2,325,9375,28178,450775,9780504,1795265022}){
  26. if(a % n == 0) continue;
  27. ll x = modpow(a, d, n);
  28. if(x == 1 || x == n - 1) continue;
  29. bool composite = true;
  30. for(int r = 1; r < s; r++){
  31. x = modmul(x, x, n);
  32. if(x == n - 1){
  33. composite = false;
  34. break;
  35. }
  36. }
  37. if(composite) return false;
  38. }
  39. return true;
  40. }
  41.  
  42. ll smallest_factor(ll n){
  43. if(n % 2 == 0) return 2;
  44. for(ll i = 3; i * i <= n; i += 2)
  45. if(n % i == 0) return i;
  46. return n;
  47. }
  48.  
  49. int main(){
  50. ios::sync_with_stdio(false);
  51. cin.tie(nullptr);
  52.  
  53. int t;
  54. cin >> t;
  55.  
  56. while(t--){
  57. int n;
  58. cin >> n;
  59.  
  60. vector<ll> b(n), c(n);
  61. for(int i = 0; i < n; i++){
  62. ll x;
  63. cin >> x;
  64.  
  65. ll p = smallest_factor(x);
  66. ll pw = 1, v = x;
  67.  
  68. while(v % p == 0){
  69. v /= p;
  70. pw *= p;
  71. }
  72.  
  73. if(v == 1){
  74. b[i] = -1;
  75. c[i] = -1;
  76. } else {
  77. b[i] = pw;
  78. c[i] = v;
  79. }
  80. }
  81.  
  82. for(ll x : b) cout << x << ' ';
  83. cout << '\n';
  84. for(ll x : c) cout << x << ' ';
  85. cout << '\n';
  86. }
  87. }
  88.  
Success #stdin #stdout 0.01s 5324KB
stdin
10
2 3 4 5 6 7 8 9 10 24
stdout
-1 -1 
-1 -1 
2 -1 -1 -1 2 
3 -1 -1 -1 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5