数据范围是,直接算的因数肯定是不行的,那么可以拆开分别算的因数,注意到输入一个数是,那么他拥有个因数,那么分别计算的因数,以及乘起来的因数,总的就是我们的结果。

因数分解的时间复杂度是,枚举因数最大是,可以通过本题。

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 = " ")