MATLAB、Pythonは数水仙を見つけます


その各ビットに3桁の数字は、キューブ自体に等しい水仙の数を指す(例えば: 1 3 + 5 3 + 3 3 = 153 1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153 スーパーアームストロング番号のパワーので、完全にデジタル変数、ナルシシズムの数をしないように)も知られています。


MATLABコードは次のとおりです。

m = 100:999; % m是向量,m1,m2,m3都是和m同长度的向量
m1 = rem(m,10); % rem(x,y):求整除x/y的余数
m2 = rem(fix(m/10),10); % 让x向0靠近取整 如fix(3.7)=3 fix(-2.7)=-2
m3 = fix(m/100) % 取第一位
k = find(m == m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)
s = m(k) % 最后一句别加分号,加了执行完就不显示了

出力:

s =

   153   370   371   407

同じ数も4人の者をバラ:

m = 1000:9999; % m是向量,m1,m2,m3都是和m同长度的向量
m1 = rem(m,10); % rem(x,y):求整除x/y的余数
m2 = rem(fix(m/10),10); % 让x向0靠近取整 如fix(3.7)=3 fix(-2.7)=-2
m3 = rem(fix(m/100),10); % 取百位
m4 = fix(m/1000); % 取第一位
k = find(m == m1.*m1.*m1.*m1+m2.*m2.*m2.*m2+m3.*m3.*m3.*m3+m4.*m4.*m4.*m4);
roses = m(k)

出力:

roses =

        1634        8208        9474

Pythonで実装:

for i in range(100,1000):
     a=int(i/100)
     b=int(i/10)%10
     c=i%10
     if i==a**3+b**3+c**3:
            print(i)
for i in range(1000,9999):
     a=int(i/1000)
     b=int(i/100)%10
     c=int(i/10)%10
     d=i%10
     if i==a**4+b**4+c**4+d**4:
            print(i)
公開された16元の記事 ウォンの賞賛8 ビュー1827

おすすめ

転載: blog.csdn.net/wayne6515/article/details/104442410