login
The number of practical numbers <= n where the practical numbers are A005153.
4

%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