%I #16 Feb 16 2025 08:33:19
%S 1,2,2,3,3,4,4,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,9,10,10,10,10,11,11,12,
%T 12,13,13,13,13,14,14,14,14,15,15,16,16,16,16,16,16,17,17,17,17,17,17,
%U 18,18,19,19,19,19,20,20,20,20,21,21,22,22
%N The number of practical numbers <= n where the practical numbers are A005153.
%C a(n) is analogous to A000720.
%H Robert Israel, <a href="/A225559/b225559.txt">Table of n, a(n) for n = 1..10000</a>
%H Eric W. Weisstein, <a href="https://mathworld.wolfram.com/PracticalNumber.html">MathWorld: Practical number</a>
%H Wikipedia, <a href="http://en.wikipedia.org/wiki/Practical_number">Practical number</a>
%e a(13)=6 as there are 6 practical numbers <= 13, namely 1, 2, 4, 6, 8 and 12.
%p isprac:= proc(n) local L,i,P;
%p L:= sort(ifactors(n)[2],(a,b) -> a[1]<b[1]);
%p if L[1][1] <> 2 then return false fi;
%p P:= 2^(L[1][2]+1)-1;
%p for i from 2 to nops(L) do
%p if L[i][1] > P+1 then return false fi;
%p P:= P*(L[i][1]^(L[i][2]+1)-1)/(L[i][1]-1);
%p od;
%p true
%p end proc:
%p isprac(1):= true:
%p N:= 100: # to get a(1)..a(N)
%p P:= select(isprac,[1,seq(i,i=2..N,2)]):
%p V:= Vector(N):
%p for n from 2 to nops(P) do V[P[n-1] .. P[n]-1]:= n-1 od:
%p V[P[-1]..N]:= n:
%p convert(V,list); # _Robert Israel_, May 29 2019
%t PracticalQ[n_] := Module[{f, p, e, prod=1, ok=True}, If[n<1 || (n>1 && OddQ[n]), False, If[n==1, True, f=FactorInteger[n]; {p, e}=Transpose[f]; Do[If[p[[i]] > 1+DivisorSigma[1, prod], ok=False; Break[]]; prod=prod*p[[i]]^e[[i]], {i, Length[p]}]; ok]]]; t={}; n3=1; n4=0; While[n3<100, (If[PracticalQ[n3], n4++]; AppendTo[t, n4]; n3++)]; t (* using _T. D. Noe_'s program A005153 *)
%Y Cf. A000720, A005153.
%K nonn
%O 1,2
%A _Frank M Jackson_, May 10 2013