::matlab编程求某正整数的三次方是四位数,四次方是六位数,四位数和六位数的各位数字正好是0~9这十个数

去高手帮忙
2025-03-10 00:33:42
推荐回答(5个)
回答1:

这个问题可以先利用前面两个条件缩小搜索范围,最后一个条件准确得到数字

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
>>

回答2:

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

回答3:

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)))

回答4:

回答5:

在电脑上拍好像不是很方便