0

동일한 전력으로 다수의 소인수 세트의 최소 및 최대를 찾기하자 티카

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

은 소수의 거듭 제곱이 증가하지 않도록 정수를 인수 분해합니다.

Mathematica에서 N의 소수 요소의 최소값과 최대 값을 찾아서 동일한 힘을 갖도록 코드를 작성하고 싶습니다. 예를 들어 r (힘)을 취하고 (많아야 2 개의) 소수를 일반적으로 부여하는 함수가 필요합니다. 상기 시료에 대한 특정 응답은 [7] = 3

maxwithpower [7] = 3


minwithpower

minwithpower [2] = 31

maxwithpower [2] = 59

아무쪼록 바랍니다.

답변

2

n = 91065388654697452410240000 다음

FactorInteger[n] 

반환

{{2, 10}, {3, 7}, {5, 4}, {7, 4}, {31, 2}, {37, 2}, {59, 2}, {61, 1}, {97, 1}} 
,536,913,632을하자로

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]]]}]] 

가 사용되는 10

상기 식

Cases[FactorInteger[n], {_, 2}] 
요인 계수 2 인 계수들의리스트로부터 요소들만

복귀

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

다음 식

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

을 반환합니다. 이 방법은 당신이 관심있는 전원 만 FactorInteger의 출력에 한 번 발생하면, 예를 들어, 실패

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

반환

{{3, 7}} 

하지만 당신은 할 수 있어야한다고

{31, 59} 

주 그 결함을 아주 쉽게 고쳐라.

+0

HPM, 나는 당신이'mathematica' 태그에 56 개의 질문에 답했다는 것을 알았습니다; 왜 [Mathematica.SE] (http://mathematica.stackexchange.com/)에서 우리와 함께하지 않겠습니까? –

0

하나 개의 솔루션은 다음과 같습니다

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} *) 
+0

선택 :: 정상 : 선택 [5040, # 1 [[2]] == 5 &]에서 위치 1에 예상되는 비 원자식. >> Select :: normal : [5040, # 1 [[2]] == 5 &]에서 위치 1에 예상되는 비 원자식. >> 부품 :: partd : 부품 사양 선택 [5040, # 1 [[2]] == 5 &] [[All, 1]]이 (가) 객체 깊이보다 깁니다. >> 부품 :: partd : 부품 사양 선택 [5040, # 1 [[2]] == 5 &] [[All, 1]]이 (가) 객체 깊이보다 깁니다. >> – asd

+0

@ b.gatessucks : 위에 오류가 발생했습니다 – asd

+0

@asd 그것은 나를 위해 작동합니다; // HoldForm 비트가 중요합니다. –