1. 程式人生 > >Matlab——自守數

Matlab——自守數

toc swe class tlab 等於 code 如果 普通 pan

要求:如果某數平方的末尾等於這個數,那麽就稱這個數為自守數
思路:x為待求數,n為x的十進制位數,將x平方後對10^n求模,所得數等於x,則x為自守數

 1 %普通方法
 2 tic;
 3 index = 0;
 4 data = zeros(1,100);
 5 for i = 5:100000
 6     n = 1 + floor(log10(i));
 7     if i == mod(i^2,10^n)
 8         index = index + 1;
 9         data(index) = i;
10     end
11 end
12 answer = data(1
:index) 13 toc

體會向量化的威力:

1 %向量化方法(快10倍)
2 tic;
3 x = 5:100000;
4 y = mod(x.^2,10.^(1 + floor(log10(x))));
5 x(x == y)
6 toc

Matlab——自守數