NC255371. 游游的因子计算
描述
输入描述
两个正整数和。
输出描述
第一行输出一个正整数,代表的因子数量。
第二行输出个正整数,代表的所有因子,从小到大排列。
示例1
输入:
6 2
输出:
6 1 2 3 4 6 12
Python3 解法, 执行用时: 964ms, 内存消耗: 9588K, 提交时间: 2023-08-12 09:55:05
a, b = map(int, input().split()) def factor(n): i = 1 fs = [] while i * i <= n: if n % i == 0: fs.append(i) if n // i != i: fs.append(n//i) i += 1 return fs factor_a = factor(a) # 求出各自的所有因子 factor_b = factor(b) cnt = 0 res = set() for ax in factor_a: res.add(ax) for bx in factor_b: res.add(bx) res.add(ax * bx) res = sorted(list(res)) print(len(res)) for x in res: print(x, end=" ")
Python3 解法, 执行用时: 1028ms, 内存消耗: 9668K, 提交时间: 2023-08-12 09:53:49
a, b = map(int, input().split()) ans1 = [] ans2 = [] i = 1 while i * i <= a: if a % i == 0: ans1.append(i) if a // i != i: ans1.append(a // i) i += 1 i = 1 while i * i <= b: if b % i == 0: ans2.append(i) if b // i != i: ans2.append(b // i) i += 1 ans = set() for ai in ans1: ans.add(ai) for bi in ans2: ans.add(bi) ans.add(ai * bi) a = sorted(ans) print(len(a)) for ai in a: print(ai, end=" ")
Java 解法, 执行用时: 910ms, 内存消耗: 23208K, 提交时间: 2023-08-12 09:52:13
import java.util.HashSet; import java.util.Scanner; import java.util.Set; import java.util.TreeSet; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int a = s.nextInt(); int b = s.nextInt(); Set<Integer> s1 = new HashSet<>(); Set<Integer> s2 = new HashSet<>(); for (int i = 1; i * i <= a; i++) { if (a % i == 0) { s1.add(i); s1.add(a / i); } } for (int i = 1; i * i <= b; i++) { if (b % i == 0) { s2.add(i); s2.add(b / i); } } Set<Long> set = new TreeSet<>(); for (int i : s1) { for (int j : s2) { set.add((long) i * j); } } System.out.println(set.size()); for (long i : set) { System.out.print(i + " "); } } }