#include <bits/stdc++.h>
using namespace std;
const int mx = 1e5 + 777;
void eval2(long long d, long long &x, int e) {
  while (x && e--) {
    x *= d;
    if (x > mx) x = 0;
  }
}
void eval(int d, int cur, int k, long long &x, long long &y) {
  eval2(d, x, cur);
  eval2(d, y, (k - cur) % k);
}
int main() {
  long long ret = 0;
  map<int, int> ct;
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    int a;
    cin >> a;
    long long x = 1, y = 1;
    for (int d = 2; d * d <= a; d++) {
      int cur = 0;
      while (a % d == 0) a /= d, cur++;
      eval(d, cur % k, k, x, y);
    }
    if (a > 1) eval(a, 1, k, x, y);
    ret += ct[x];
    ct[y]++;
  }
  cout << ret << "\n";
  return 0;
}
