利用matlab实现以下功能:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序思路:
对n进行分解质因数,应先找到一个最小的质数k,从2开始,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n不等于k,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行 (1)。
Matlab实现的程序如下:
clear all
n=input('pelase input the number:') %保存输入的值
m=2; %从最小的质数2开始
display([num2str(n),'='])
while(1)
if(~mod(n,m)) %找到可以整除的数
k=m;
if(n==k) %找到最后一个质数
display([num2str(n)])
break; %跳出循环
else
n=n/k; %将n除以质数的值继续循环
m=1; %保证质数还是从2开始
display([num2str(k),'*']) %将分解的质数显示出来
end
end
m=m+1; %不用担心m是不是质数,因为能被4或6等整除的,肯定能被2或3这些小的质数整除
end
也可以从另外一个角度写这个程序:
(1)判断这个数n本身是不是质数,如果是,则直接打印出来;
(2)如果这个数n不是质数,则找到它最小的质数k,并用n=n/k进行更新,重复(1)过程,直到满足最后的n是个质数。
本程序存在的问题是:输出不在同一行,如
pelase input the number:77
77=
7*
11
pelase input the number:11
11=
11
所以如果有好的方法,可以积极留言~~