from math import sqrt
from collections import Counter
# ①试除法求约数
x = int(input())
ans = []
for i in range(1,int(sqrt(x)) + 1):
if x % i == 0:
ans.append(i)
print(ans)
# ②求多个数乘积的约数个数
n = int(input())
a = [*map(int,input().split())]
cnt = Counter()
MOD = pow(10,9) + 7
# 分解质因数,并得到每个质数的个数!
# n = x1 ^ p1 + x2 ^ p2 + ... + xn ^ pn
# cnt = (1 + p1) * (1 + p2) * ... * (1 + pn)
# 相当于排列组合,且由于是质数,每一个组合得到的约束唯一!
for x in a:
i = 2
while i * i <= x:
while x % i == 0:
x //= i
cnt[i] += 1
i += 1
if x > 1:
cnt[x] += 1
ans = 1
for p in cnt.values():
ans = (ans * (1 + p)) % MOD
print(ans)
# ③求多个数乘积的约束之和
n = int(input())
a = [*map(int,input().split())]
cnt = Counter()
MOD = pow(10,9) + 7
# 分解质因数,并得到每个质数的个数!
# n = x1 ^ p1 + x2 ^ p2 + ... + xn ^ pn
# cnt = (1 + x1 + x1 ^ 2 + ... + x1 ^ p1) * (1 + x2 + x2 ^ 2 + ... + x2 ^ p2) * ... * ...
for x in a:
i = 2
while i * i <= x:
while x % i == 0:
x //= i
cnt[i] += 1
i += 1
if x > 1:
cnt[x] += 1
ans = 1
for x,cnt in cnt.items():
tmp = 1
# 秦九韶算法
for _ in range(cnt):
tmp = (tmp * x + 1) % MOD
ans = ans * tmp % MOD
print(ans)
标签:约数,...,cnt,int,ans,x2,input
From: https://www.cnblogs.com/gebeng/p/18111619