#!ruby -rprime N, P = gets.split.map &:to_i _primes = P.prime_division.to_h.keys primes = Prime.each(N).select{|i| _primes.any?{|j| i == j || i * j <= N } } oks = [0] * (N+1) (1..N).each{|i| primes.each{|pr| if i % pr == 0 oks[i] = oks[i / pr] = 1 end } } oks[1] = 0 oks[P] = 1 p oks.count(1)