prime factor function matlab
11 次查看(过去 30 天)
显示 更早的评论
function [z1] = pfact(Z)
if Z>=2
p = 2:Z;
q = mod(Z,p);
a=find(q==0);
z1=p(a)
elseif Z==1
z1 = 1
elseif Z==0
z1 = []
disp("error")
end
I'm trying to get only prime factors but this code gives me all the factors, I need the prime factors that when they multiply with each other they give the original number.
3 个评论
回答(1 个)
Dyuman Joshi
2023-4-3
The code you wrote gives the divisors of Z.
This should work well unless you are dealing with extremely large numbers -
out1=pfact(20)
out2=pfact(prod(primes(15)))
function [z1] = pfact(Z)
if Z>=2
p = primes(sqrt(Z));
z1 = [];
while Z>1
d = p(rem(Z,p)==0);
if isempty(d)
z1=[z1 Z];break
end
z1=[z1 d];
Z = Z/prod(d);
end
z1=sort(z1);
elseif Z==1
z1 = 1;
elseif Z==0
z1 = [];
disp("error")
end
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!