matlab學習筆記3 自守數的兩種解法

2021-09-10 22:41:48 字數 769 閱讀 5460

自守數是指某個數的平方的末尾幾位數等於這個數的數,比如5,由於5*5=25,5為25的尾數,因此5是自守數。

根據自守數的定義,對於乙個十進位制數x,其位數為n,若x2%10n=x,則x為自守數。規定0,1非自守數。

迴圈解法:

j = 0;

for n = 5:100000

temp = floor(log10(n))+1; %temp為當前n的位數

y(n) = n*n;

if mod(y(n),(10^temp)) == n

j = j+1;

data(j) = n;

endendanswer=data

矩陣解法

x = 5:100000;

y = mod(x.^2,10.^(floor(log10(x))+1));

answer = x(x == y) %x==y求邏輯陣列,作為x的索引值

使用tic;toc;求執行時長(執行環境為matlab2017b),迴圈解法用了0.86596s,矩陣解法用了0.31834s。由此可見,矩陣解法是更為優化的解法。

matlab常見錯誤:下標索引必須為正整數型別或邏輯型別。

a=[5 6 7 8]

a(1) %正確寫法

a(1.1) %錯誤寫法

a(logical([0 1 0 1])) %正確寫法

a([0 1 0 1]) %錯誤寫法

學習筆記 Matlab 變數 3

一,變數 及乙個字元表示的資料 矩陣 eg x 4 定義乙個x變數並初始化賦值為 4 matlib 輸出 x 4 二,a 而且變數在使用是必先賦值。b,而且系統收到乙個變數後,這個變數可以被引用 eg x 4 5 y x 9 三,如果系統返回乙個結果,不分配給任何變數,系統就會自動分配乙個ansde...

matlab的學習筆記

1.要建立每行包含四個元素的陣列,請使用逗號 或空格分隔各元素。a 1 2 3 4 a 1 2 3 4 這種陣列為行向量。要建立包含多行的矩陣,請使用分號分隔各行。3.3.在matlab中 可以使用單一的算術運算子或函式來處理矩陣中的所有值。要轉置矩陣就使用單引號 矩陣求逆可以使用 inv a 但對...

matlab學習筆記

一致化矩陣 z1 1 2 4 3 4 1 z2 1 2 2 5 6 1 b 0 1 q 3 z concur b,q 向量之和 x1 netsum z1,z2 向量之積 x2 netprod z1,z2 感知器神經網路,完成 或 的計算 err goal 0.001 max epoch 500 x ...