自守數是指某個數的平方的末尾幾位數等於這個數的數,比如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 ...