Odin SolutionsOdin Solutions
🕰️
Factors
Week 12, 2026
All SolutionsBuild 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()
}
}