数据范围是,直接算
的因数肯定是不行的,那么可以拆开分别算
,
的因数,注意到输入一个数是
,那么他拥有
个因数,那么分别计算
和
的因数,以及乘起来的因数,总的就是我们的结果。
因数分解的时间复杂度是,枚举因数最大是
,可以通过本题。
import sys
from math import isqrt
input = sys.stdin.readline
if __name__ == '__main__':
a, b = map(int, input().split())
lst1 = []
for i in range(1, isqrt(a) + 1):
if a % i == 0:
lst1.append(i)
lst1.append(a // i)
lst2 = []
for i in range(1, isqrt(b) + 1):
if b % i == 0:
lst2.append(i)
lst2.append(b // i)
st = set()
for x in lst1:
for y in lst2:
st.add(x * y)
st.add(x)
st.add(y)
print(len(st))
for x in sorted(st):
print(x,end = " ")