2012-09-09 2 views
0

이 질문을 이해하려고합니다.출력을위한 절차, 정수 및 정수를 나누는 목록

primeset의 입력이 양의 정수 n이고 출력이 p가 n을 나누는 모든 소수 p의 집합 인 프로 시저를 작성하십시오.

나는 지금까지 다음을 시도했다. 이것은 단풍 나무를 사용하고 있습니다.

primeset:=proc 

# Determine if n is divisble by p: 

      local p; 
      for p from 1 to n do 
      if isprime(p) then # check divisibility by primes 
      if modp(n,p) = 0 then # check if divided by prime 
       return false; 
      end if; 
      end if; 
      end do; 
      return true; 
      end proc; 
      # VARIABLES: 
      # INPUT: 
      # n is a (positive) integer 
      # LOCAL: 
      # p is a (positive) integer. 
      # OUTPUT: 
      # output is the set of all primes p such that p divides n. 

내 OUPUT이 있었다 :

primeset := proc (n) local p; for p to n do if isprime(p) then if modp(n, p) = 0 then return false end if end if end do; return true end proc. 

내가 몇 가지 숫자 2,4-, 10에서 실행하려고하고 내가 가진 모든 거짓, 거짓, 거짓이었다.

누구나 제안 할 수 있다면 좋을 것입니다.

답변

1

여기에 몇 가지 힌트입니다

n가 주요 요인의 목록의 제품입니다.

가장 작은 요소 p >= 2을 검색하십시오.

나머지 요인의 제품은 등, n/p의 가장 작은 소인수를 검색 n/p, 그래서 반복

기억 요소가 반복 될 수 있다는 것을, 당신이 찾아 다음 요인이 될 수 있도록> = 마지막.

마지막으로, 숫자의 가장 큰 요소는 해당 숫자의 제곱근을 초과 할 수 없습니다.

+0

감사합니다. 나는 그것을 시도 할 것입니다. –

1

Maple에는 기본 요소 목록을 출력하는 ifactor(n)과 같은 factorisation 명령이 내장되어있어 목록을 작성할 수 있습니다. @MRAB에 의해 제안 된 접근 방식은 또한 매우 일반적이며 가능한 모든 주요 요인을 반복하고 n이 그것을 요인으로 포함하는지 확인합니다.

+0

팁을 주셔서 대단히 감사드립니다. –