利用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

 

所以如果有好的方法,可以積極留言~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM