All SolutionsAll Solutions

🕰️

Factors

Week 12, 2026

Build dictionary and print the result | greenya | Odin Solutions

package main import "core:fmt" main :: proc () { // [num of factors] => {list of numbers}; [0] is not used factors := make([dynamic][dynamic] int) for n in 1..=100_000 { // 1 has one factor, any other has two factors (1 and itself) num_of_factors := n == 1 ? 1 : 2 for j in 2..=n/2 do if n%j == 0 do num_of_factors += 1 if num_of_factors >= len(factors) do resize(&factors, num_of_factors + 1) append(&factors[num_of_factors], n) } #reverse for list, num_of_factors in factors { if len(list) == 0 do continue for n in list do fmt.println(n, ":", num_of_factors) fmt.println() } }

Python - Sieve | BMC | Python Solutions

def count_factors_sieve(limit): factors = [0] * (limit + 1) for i in range(1, limit + 1): for j in range(i, limit + 1, i): factors[j] += 1 return factors limit = 100000 factor_counts = count_factors_sieve(limit) numbers_data = [(n, factor_counts[n]) for n in range(1, limit + 1)] numbers_data.sort(key=lambda x: (-x[1], x[0])) print("Writing to ans.txt...") with open("ans.txt", "w") as f: current_count = None group_count = 0 max_count = numbers_data[0][1] for num, count in numbers_data: if current_count is not None and count != current_count: f.write("\n") group_count += 1 f.write(f"{num} : {count}\n") current_count = count print("Process Completed")