0

n=2^10 3^7 5^4...31^2...59^2 61...97

是一个整数的因式分解,使得素数的幂是不增加的。

我想在 Mathematica 中编写一个代码来找到 n 的素数因子的最小值和最大值,以使它们具有相同的功率。例如,我想要一个函数,它通常采用 r(幂)并给出(最多两个)素数。上述示例的具体答案是

minwithpower[7]=3

最大功率[7]=3


minwithpower[2]=31

最大功率[2]=59

请有任何想法。

4

2 回答 2

2

n = 91065388654697452410240000那么让

FactorInteger[n]

返回

{{2, 10}, {3, 7}, {5, 4}, {7, 4}, {31, 2}, {37, 2}, {59, 2}, {61, 1}, {97, 1}}

和表达式

Cases[FactorInteger[n], {_, 2}]

仅返回系数为 的因子和系数列表中的那些元素2

{{31, 2}, {37, 2}, {59, 2}}

接下来是表达式

Cases[FactorInteger[n], {_, 2}] /. {{min_, _}, ___, {max_, _}} -> {min, max}

返回

{31, 59}

请注意,如果您感兴趣的幂仅在 FactorInteger 的输出中出现一次,则此方法将失败,例如

Cases[FactorInteger[n], {_, 7}] /. {{min_, _}, ___, {max_, _}} -> {min, max}

返回

{{3, 7}}

但是你应该能够很容易地解决这个缺陷。

于 2012-10-04T14:01:15.417 回答
0

一种解决方案是:

getSamePower[exp_, n_] :=  With[{powers = 
 Select[ReleaseHold[n /. {Times -> List, Power[a_, b_] -> {a, b}}], #[[2]] == 
   exp &]}, 
  If[Length[powers] == 1, {powers[[1, 1]], powers[[1, 1]]}, {Min[powers[[All, 1]]], Max[powers[[All, 1]]]}]]

用作:

getSamePower[7,  2^10 3^7 5^4 \[Pi]^1 31^2 E^1 59^2 61^1 I^1 97^1 // HoldForm]
(* {3, 3} *)

getSamePower[2,  2^10 3^7 5^4 \[Pi]^1 31^2 E^1 59^2 61^1 I^1 97^1 // HoldForm]
(* {31, 59} *)
于 2012-10-04T14:01:11.937 回答