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是否包含它作为因子