import
java.util.*;
class
GFG {
static
int
upper_bound(ArrayList<Integer> arr,
int
ele)
{
for
(
int
i =
0
; i < arr.size(); i++)
if
(arr.get(i) > ele)
return
i;
return
arr.size();
}
static
int
numPairs(
int
[] arr,
int
n)
{
HashMap<Integer, ArrayList<Integer> > mp
=
new
HashMap<Integer, ArrayList<Integer> >();
int
mx =
0
;
for
(
int
i =
0
; i < n; i++) {
mx = Math.max(mx, arr[i]);
ArrayList<Integer> l1;
if
(!mp.containsKey(arr[i]))
l1 =
new
ArrayList<Integer>();
else
l1 = mp.get(arr[i]);
l1.add(i);
mp.put(arr[i], l1);
}
int
ans =
0
;
for
(var i : mp.entrySet())
{
int
ctr =
1
;
for
(
int
j : i.getValue())
{
ans += (i.getValue()).size() - ctr;
for
(
int
k =
2
* i.getKey(); k <= mx;
k += i.getKey()) {
int
numGreater =
0
;
if
(mp.containsKey(k))
numGreater = mp.get(k).size()
- upper_bound(mp.get(k), j);
ans += numGreater;
}
ctr++;
}
}
return
ans;
}
public
static
void
main(String[] args)
{
int
[] arr = {
1
,
2
,
3
,
4
,
5
};
int
n = arr.length;
System.out.println(numPairs(arr, n));
}
}