def factorize(x): factors = {} if x == 1: return factors i = 2 while i * i <= x: while x % i == 0: factors[i] = factors.get(i, 0) + 1 x = x // i i += 1 if x > 1: factors[x] = 1 return factors def generate_divisors(factors): if not factors: return [(1, 1)] primes = list(factors.keys()) exponents = [factors[p] for p in primes] divisors = [] current_exponents = [0] * len(primes) def backtrack(index): if index == len(primes): d = 1 has_square = False prime_count = 0 for i in range(len(primes)): p = primes[i] e = current_exponents[i] d *= p ** e if e >= 2: has_square = True if e >= 1: prime_count += 1 mu = 0 if has_square else (-1) ** prime_count divisors.append((d, mu)) return for e in range(0, exponents[index] + 1): current_exponents[index] = e backtrack(index + 1) backtrack(0) return divisors def main(): import sys input = sys.stdin.read().split() N = int(input[0]) A = list(map(int, input[1:N+1])) divisors_dict = {} for x in A: factors = factorize(x) generated = generate_divisors(factors) for d, mu in generated: if d not in divisors_dict: divisors_dict[d] = mu sum_ans = 0 for d in divisors_dict: mu = divisors_dict[d] if mu == 0: continue cnt = 0 for a in A: if a % d == 0: cnt += 1 if cnt == 0: continue term = mu * ((1 << cnt) - 1) sum_ans += term print(sum_ans) if __name__ == "__main__": main()