Re: FactorInteger Print Formatting
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg694] Re: [mg650] FactorInteger Print Formatting
- From: wmm at chem.wayne.edu (Martin McClain)
- Date: Mon, 10 Apr 95 10:47:13 EDT
Dear Alan: Here is a clue. It is not exactly what you asked for, and it still needs an automatic way to generate the [[4]] at the end, but I think it is some progress. In[23]:= Trace[FactorInteger[400] /. {a_,b_}->a^b][[4]] 5 2 Out[23]= {2 , 4 } If you try to go beyond this kind of list output to the product form you asked for, the automatic exponent evaluation machinery takes over and destroys all progress. This is closely related to a question I asked recently, which I suspect has no answer; viz: How do you prevent In[34]:= Sqrt[8] Out[34]= 2 Sqrt[2] I think what we need is an new option, like AnswerForm->pattern, which would stop evaluation if the desired pattern is created anywhere along the evaluation chain. Has anybody given any thought to this, WRI? Regards- Martin >Could anyone suggest a neat way to reformat the output of >FactorInteger into a more usable print format? > >FactorInteger[n] gives a list of prime factors of the integer n >in ascending order, together with their exponents viz: > > FactorInteger[900] produces the list {{2,2},{3,2},{5,2}} > >What I need is a function called say factorform[list] such that: > > Print[ factorform[{{2,2},{3,2},{5,2}}] ] produces 2^2*3^2*5^2 > >Ideally exponents equal to 1 would be suppressed so that when > > ff = FactorInteger[30] produces {{2,1},{3,1},{5,1}} then > > Print[factorform[ff]] would give 2*3*5 instead of 2^1*3^1*5^1 and > > Print[factorform[FactorInteger[2^6*3*5^2*7]]] would give 2^6*3*5^2*7 > >A procedural solution is possible, but I was unable to create a simple >function which would give the desired result. > > >Alan Powell POWELLA at delphi.com