project-euler / project-euler / 47.rb

Cache = { 1 => 0 }

def num_distinct_factors_helper(n, start_from)
    if not Cache.has_key?(n) then
        to_add = 0
        d = n
        if ((d % start_from) == 0) then
            while d % start_from == 0 do
                d /= start_from 
            end
            to_add = 1
        end
        Cache[n] = to_add + num_distinct_factors_helper(d, start_from+1)
    end
    return Cache[n];
end

def num_distinct_factors(n)
    return num_distinct_factors_helper(n,2)
end

for n in 14 .. 100_000 do
    puts "NNN === #{n}"
    if not (n .. n+3).detect { |i| num_distinct_factors(i) != 4} then
        print "n = #{n}\n"
        exit
    end
end
    
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.