matlab编程求助-求一个正整数的所有质因数要求做一个类似factor的function,找出用户输入整数的所有质因数.例如输入12 则输出 2 2 3希望有初级一点的解法.刚学这个不几天 很多东西不懂 现在最
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 02:07:36
![matlab编程求助-求一个正整数的所有质因数要求做一个类似factor的function,找出用户输入整数的所有质因数.例如输入12 则输出 2 2 3希望有初级一点的解法.刚学这个不几天 很多东西不懂 现在最](/uploads/image/z/8587464-24-4.jpg?t=matlab%E7%BC%96%E7%A8%8B%E6%B1%82%E5%8A%A9-%E6%B1%82%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B4%E6%95%B0%E7%9A%84%E6%89%80%E6%9C%89%E8%B4%A8%E5%9B%A0%E6%95%B0%E8%A6%81%E6%B1%82%E5%81%9A%E4%B8%80%E4%B8%AA%E7%B1%BB%E4%BC%BCfactor%E7%9A%84function%2C%E6%89%BE%E5%87%BA%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E6%95%B4%E6%95%B0%E7%9A%84%E6%89%80%E6%9C%89%E8%B4%A8%E5%9B%A0%E6%95%B0.%E4%BE%8B%E5%A6%82%E8%BE%93%E5%85%A512+%E5%88%99%E8%BE%93%E5%87%BA+2+2+3%E5%B8%8C%E6%9C%9B%E6%9C%89%E5%88%9D%E7%BA%A7%E4%B8%80%E7%82%B9%E7%9A%84%E8%A7%A3%E6%B3%95.%E5%88%9A%E5%AD%A6%E8%BF%99%E4%B8%AA%E4%B8%8D%E5%87%A0%E5%A4%A9+%E5%BE%88%E5%A4%9A%E4%B8%9C%E8%A5%BF%E4%B8%8D%E6%87%82+%E7%8E%B0%E5%9C%A8%E6%9C%80)
matlab编程求助-求一个正整数的所有质因数要求做一个类似factor的function,找出用户输入整数的所有质因数.例如输入12 则输出 2 2 3希望有初级一点的解法.刚学这个不几天 很多东西不懂 现在最
matlab编程求助-求一个正整数的所有质因数
要求做一个类似factor的function,找出用户输入整数的所有质因数.例如输入12 则输出 2 2 3
希望有初级一点的解法.
刚学这个不几天 很多东西不懂 现在最多也就用个for while和一般的命令
c=[];
while isempty(b)
b(~mod(b,b(1)))=[];
这几点看不懂
matlab编程求助-求一个正整数的所有质因数要求做一个类似factor的function,找出用户输入整数的所有质因数.例如输入12 则输出 2 2 3希望有初级一点的解法.刚学这个不几天 很多东西不懂 现在最
function c=myfactor(a)
b=2:sqrt(a);
c=[];
while isempty(b)
if mod(a,b(1))
b(~mod(b,b(1)))=[];
continue;
else
c=[c,b(1)];
a=a/b(1);
b(b>sqrt(a))=[];
end
end
c=[c,a];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
这还不初级啊,没用用到任何matlab中自带的关于素数的函数,全部自己找出来,你还想怎么个初级法?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c=[]就是令c为空矩阵,以后会慢慢加进去
isempty是判断矩阵是否为空的命令,是取反,即原来是0的变成1(即T),非0的变成0(即F),while isempty(b)就是当b不空时循环.
mod是取模,
if mod(a,b(1))就是如果a不被b(1)整除
mod(b,b(1))就是如果b中能被b(1)整除就为1,否则为0.(因为前面取了个反)
b(~mod(b,b(1)))=[]的意思就是把b中能被b(1)整除的那些元素都删了.因为那些都不是素数,除了b(1),但b(1)又不被a整除,即不是a的因子,所以也删掉.continue什么意思应该知道的吧
然后如果a能够被b(1)整除的话那么b(1)就是a的素因子了,把它放到矩阵c中
b(b>sqrt(a))=[]的意思也是吧b中大于根号a的元素都删了.