这个问题可以先利用前面两个条件缩小搜索范围,最后一个条件准确得到数字
clc;clear
ab =floor([10^(4-1),10^4-1].^(1/3));
cd =floor([10^(6-1),10^6-1].^(1/4));
imax = min([ab(2) cd(2)]);
imin = max([ab(1) cd(1)]);
for i = imin :1: imax
numi4 = i^3;
numi6 = i^4;
str = [num2str(numi4),num2str(numi6)] ;
arr =double(str) - double('0');
if(isequal(sort(arr),0:1:9))
fprintf('此正整数为:%d\n',i)
fprintf('%d^3=%d\n',i,i^3)
fprintf('%d^4=%d\n',i,i^4)
end
end
最后结果如下
此正整数为:18
18^3=5832
18^4=104976
>>
clear all;
clc;
a=fix(1000^(1/3)); %检测最小的四位数开3次方是多少
b=fix(9999^(1/3)); %检测最大的四位数开3次方是多少
N=zeros(b-a,1); %预留一个b-a行1列的零矩阵存放结果
for num=a:b
x=num^3;
y=num^4;
i=1;
if floor(log10(y))+1==6 %检测num的4次方是否为六位数
N(i)=num; %如果是存放在N矩阵中
i=i+1;
else
end
end;
这个数是21,,21^3=9261,21^4=194481
clc
highth=min(nthroot(9999,3),nthroot(999999,4));
lowth=max(nthroot(1000,3),nthroot(100000,4));
x=ceil(lowth):highth;
y=[num2str(x'.^3),num2str(x'.^4)];
fprintf(1,'这个数是:%d\n',x(all(sort(y,2)==repmat('0123456789',length(x),1),2)))
在电脑上拍好像不是很方便