我正在尝试创建一个名为"复合材料"使用接受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
任何帮助将不胜感激
非常感谢
答案 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