小红的完全平方数 【Python实现】

360影视 日韩动漫 2025-05-30 14:57 2

摘要:from collections import defaultdictdef precompute_min_prime(max_num): min_prime = [0] * (max_num + 1) for i in range(2, max_num +

from collections import defaultdictdef precompute_min_prime(max_num): min_prime = [0] * (max_num + 1) for i in range(2, max_num + 1): if min_prime[i] == 0: min_prime[i] = i for j in range(i * i, max_num + 1, i): if min_prime[j] == 0: min_prime[j] = i return min_primedef get_square_free(x, min_prime): if x == 1: return 1 res = 1 while x > 1: p = min_prime[x] cnt = 0 while x % p == 0: x //= p cnt += 1 if cnt % 2 == 1: res *= p return resdef solve: n = int(input) arr = list(map(int, input.split)) max_num = max(arr) min_prime = precompute_min_prime(max_num) freq = defaultdict(int) for num in arr: sf = get_square_free(num, min_prime) freq[sf] += 1 max_freq = max(freq.values) print(n - max_freq)if __name__ == "__main__": solve

来源:君浩教育

相关推荐