2013-02-24 3 views
-3

저는 1과 n 사이의 계승의 수를 계산하기 시작하는 데 조금 어려움이 있습니다. 쉬운 해결책은 단지 요인 테이블을 사용하는 것입니다.1과 X 사이의 팩토리얼의 수를 계산하십시오.

예를 들어 1과 362,880 사이에 1 !, 2 !, 3! ... 8! 및 9! 프로그램은 1 사이에 8 계승이 있다고 출력합니다! 및 9!

==

I는 다수의 X는 요인인지를 결정하는 별도의 부울 함수 일하고

. 예를 들어 X가 5,040이면 True를 반환하지만 5,033이면 False를 반환합니다. 이것은 목록이 아닌 계산을 사용해야합니다. 누군가가 올바른 방향으로 나를 가리킬 수 있을까요?

...

분명히 재귀가 필요합니까?

+1

왜 룩업 테이블을 사용할 수 없습니까? – Rapptz

+0

아직 수업에서 다루지 않았기 때문에. :) 그것은 루프 및/또는 재귀를 사용해야 할 것 같아요. –

+2

음, 어쨌든 모든 것을 계산해야하므로, 한계를 넘기 전까지 계승을 계속 계산하지 않는 것이 어떻습니까? –

답변

0

당신은 모두에 대해 동일한 알고리즘을 사용할 수 있습니다

i = 1 
calc = 1 
while calc < X 
    i = i + 1 
    calc = calc * i 

// is X a factorial number ? 
if calc == X 
    true 
else 
    false 

//How many between 1 and X ? 
    i - 1 
+0

의사 코드에 2 가지 문제가 있다고 생각합니다. 계산을 사용하기 전에 1을 늘려야합니다. 2 - 1과 X (i-1) 사이의 정의에 따르면 – Slava

+0

@Slava 예, 언제입니까? Tezirgs 코드를 실행하여 잘못된 정보를 반환합니다. 이온. 예를 들어, 1과 50 사이에 5 개의 팩토리얼이 있다고합니다. 그러나 조정할 수 있도록 작동했습니다. –

+0

@Slava Thanks, Edited! – Tezirg

0

의사 코드를 고려 범위가 아마 가장 가까운 계승에 도착 Stirling's approximation를 사용하여, largeish 경우 더 나은입니다 (수치 적으로 해결 N = 값!) 생각.

관련 문제