Math 输出过程,除法和整数的素数列表

Math 输出过程,除法和整数的素数列表,math,maple,Math,Maple,我正试图弄明白这个问题 编写一个过程,素数集,其输入为正整数n,其输出为所有素数p的集合,使得p除以n 到目前为止,我已经尝试了以下方法。这是用枫木做的 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

我正试图弄明白这个问题

编写一个过程,
素数集
,其输入为正整数n,其输出为所有素数p的集合,使得p除以n

到目前为止,我已经尝试了以下方法。这是用枫木做的

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.
我的结论是:

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,我得到的是假,假,假

如果有人能提供一些建议,那就太好了。

这里有一些提示:

数字
n
是素因子列表的乘积

搜索最小系数
p>=2

剩余因子的乘积是
n/p
,因此重复,搜索
n/p
的最小素因子,等等

请记住,一个因子可能会重复,因此您找到的下一个因子将>=最后一个


最后,一个数字的最大因子不能超过该数字的平方根。

Maple有内置的因子分解命令,如
ifactor(n)
,它输出一个素因子列表,您可以使用它来创建列表。@MRAB建议的方法也很常见,迭代所有可能的素因子,看看n是否包含它作为因子