2014-11-11 2 views
0

나는 사용자 입력을 받아들이는 maple을 사용하여 "composites"라는 프로그램을 만들려고한다. 그리고 내가 어떻게 갈지는 모르지만 isprime 함수를 사용하여 처음 n 개의 합성 숫자를 출력한다. 나는 메이플에 대한 경험이 거의 없기 때문에 이것을하는 것에 대해. 여기에 내 현재 코드가 있지만, 그것은 아마 끔찍한 잘못입니다.Maple isprime function

composites := proc (n) 
local i, L; 
L := []; 
for i to n do if isprime(n) then L := [op(L), i] end if end do; 
L 
end proc 

어떤 도움을

많은 감사

답변

0

당신은 가까운을 감상 할 수있다. 변경되는 n보다는 i이므로 isprime(i)isprime(n)이 아니라 테스트해야합니다.

또한 isprime이 false를 반환 할 때마다 L 목록 만 보완하려고합니다. 따라서 조건부에 not isprime(i)이 필요합니다.

composites := proc (n) 
local i, L; 
L := []; 
for i from 4 to n do 
    if not isprime(i) then 
     L := [op(L), i]; 
    end if; 
end do; 
op(L); 
end proc: 

composites(18); 

       4, 6, 8, 9, 10, 12, 14, 15, 16, 18 

또한 예를 들면, 더 많은 기능 방식을 코딩 할 수

composites:=proc(n::posint) 
    local i; 
    seq(`if`(isprime(i), NULL, i), i=4..n); 
end proc: 

composites(18); 

       4, 6, 8, 9, 10, 12, 14, 15, 16, 18