amygod 发表于 2007-3-30 22:26

求一个正整数的因子以及质因数程序

求一个正整数的所有因子和质因数的小程序,献丑了:)

function factorsfun(t)
%调用形式:factorsfun(t),t为一正整数.
%Author:LIQING 2007-1-14
k=1;
for i=1:t
if t/i-round(t/i)==0
a(k)=i;k=k+1;
end
end
disp('factors:');
disp(num2str(a));
b=a;
for h=length(a):-1:2
    for l=(h-1):-1:2
      if a(h)/a(l)-round(a(h)/a(l))==0
            b(h)=0;
      end
    end
end
b(find(b==0):length(a))=[];
disp('the smallest prime factors:');
disp(num2str(b));

eight 发表于 2007-3-31 00:02

原帖由 amygod 于 2007-3-30 22:26 发表
求一个正整数的所有因子和质因数的小程序,献丑了:)

function factorsfun(t)
%调用形式:factorsfun(t),t为一正整数.
%Author:LIQING 2007-1-14
k=1;
for i=1:t
if t/i-round(t/i)==0
a(k)=i;k=k+1;
...


赞一个!不过有以下建议:

求正整数的所有因子时,循环条件只需要做到 t/2,这样可以节省一半时间。另外,条件判断中,可以使用 rem 函数

求质因子时,直接使用matlab的factor函数就可以了

[ 本帖最后由 eight 于 2007-3-31 12:53 编辑 ]

xjzuo 发表于 2007-3-31 07:55

虽然eight说的对,但还是要鼓励一下自己动手编程.
页: [1]
查看完整版本: 求一个正整数的因子以及质因数程序