MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Divisors

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24272] Divisors
  • From: hahaj at home.com (Hans Havermann)
  • Date: Wed, 5 Jul 2000 23:10:56 -0400 (EDT)
  • Organization: Rarebit Dreams
  • Sender: owner-wri-mathgroup at wolfram.com

I need a re-formulated "divisors" function that works, *not* on
Integers, but on the *list of factors* that one gets when one applies
FactorInteger to a number. That way I can still get the divisors of a
number whose factorization is difficult, but nonetheless known.

I have a rough working model of such a function but it relies on the
function Subsets found in DiscreteMath`Combinatorica` (see below) and I
don't have enough RAM to apply Subsets to lists larger than 20 elements.
Unfortunately, I need to find the divisors of numbers whose
factorization comprises as many as 40 elements.

Can anyone provide a programming solution?

--
<< DiscreteMath`Combinatorica`

fac = First[Transpose[FactorInteger[2*3*3*11*11*11*13]]];
pow = Last[Transpose[FactorInteger[2*3*3*11*11*11*13]]];
expfac = {}; Do[
  Do[expfac = Append[expfac, fac[[i]]], {j, 1, pow[[i]]}], {i, 1, 
    Length[pow]}]; expfac

{2, 3, 3, 11, 11, 11, 13}

div = ReplacePart[Union[Subsets[expfac]], {1}, 1]

{{1}, {2}, {3}, {11}, {13}, {2, 3}, {2, 11}, {2, 13}, {3, 3}, {3, 11},
{3, 13}, {11, 11}, {11, 13}, {2, 3, 3}, {2, 3, 11}, {2, 3, 13}, {2, 11,
11}, {2, 11, 13}, {3, 3, 11}, {3, 3, 13}, {3, 11, 11}, {3, 11, 13}, {11,
11, 11}, {11, 11, 13}, {2, 3, 3, 11}, {2, 3, 3, 13}, {2, 3, 11, 11}, {2,
3, 11, 13}, {2, 11, 11, 11}, {2, 11, 11, 13}, {3, 3, 11, 11}, {3, 3, 11,
13}, {3, 11, 11, 11}, {3, 11, 11, 13}, {11, 11, 11, 13}, {2, 3, 3, 11,
11}, {2, 3, 3, 11, 13}, {2, 3, 11, 11, 11}, {2, 3, 11, 11, 13}, {2, 11,
11, 11, 13}, {3, 3, 11, 11, 11}, {3, 3, 11, 11, 13}, {3, 11, 11, 11,
13}, {2, 3, 3, 11, 11, 11}, {2, 3, 3, 11, 11, 13}, {2, 3, 11, 11, 11,
13}, {3, 3, 11, 11, 11, 13}, {2, 3, 3, 11, 11, 11, 13}}

Sort[Table[Apply[Times, div[[i]]], {i, 1, Length[div]}]]

{1, 2, 3, 6, 9, 11, 13, 18, 22, 26, 33, 39, 66, 78, 99, 117, 121, 143,
198, 234, 242, 286, 363, 429, 726, 858, 1089, 1287, 1331, 1573, 2178,
2574, 2662, 3146, 3993, 4719, 7986, 9438, 11979, 14157, 17303, 23958,
28314, 34606, 51909, 103818, 155727, 311454}

Divisors[2*3*3*11*11*11*13] - %

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}


  • Follow-Ups:
  • Prev by Date: Re: Using Block instead of Module?
  • Next by Date: LogPlot != Plot[Log]
  • Previous by thread: Re: Plotting multiple functions using Map
  • Next by thread: Re: Divisors