#Matlab, 60 bytes
Matlab, 60 bytes
Continuing my attachment to one-line Matlab functions. Without using a factorisation built-in:
f=@(x) nnz(arrayfun(@(x) x-2==nnz(mod(x,[1:1:x])),[1:1:x]));
Given that a prime y
has only two factors in [1,y]
: we count the numbers in the range [1,x]
which have only two factors.
Using factorisation allows for significant shortening (down to 46 bytes).
g=@(x) size(unique(factor(factorial(x))),2);
Conclusion: Need to look into them golfing languages :D