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