Maple isprime功能

时间:2014-11-11 03:02:53

标签: function numbers maple

我正在尝试创建一个名为"复合材料"使用接受n的用户输入的maple并使用isprime函数打印出前n个复合数字虽然我不知道如何做这个,因为我对枫树的经验很少。这是我目前的代码,虽然它可能非常不正确。

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

任何帮助将不胜感激

非常感谢

1 个答案:

答案 0 :(得分:0)

你很亲密。您必须测试isprime(i)而不是isprime(n),因为它是i而不是n正在发生变化。

此外,只有L返回false时,您才希望扩充列表isprime。所以你想要条件中的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