如何用matlab找到最小的自然数n,使其的组成数字同时等于其2,3 4 5和6倍的组成数字?

如何用matlab找到最小的自然数n,使其的组成数字满足同时等于其2倍(2*n),3 4 5和6倍的组成数字?(这里进一步解释说明下组成数字相同的含义是,比如123 132 213 231 321 312含有相同的组成数字,也就是说只要是1、2、3的排列组合即可)

可以从1开始一个数一个数来找,先得到每一位的数字然后判断所含数字是否相同。

tic;
i = 1;
while true
    digits_original = unique(num2str(i),'sorted');%获得原数每一位数字并排序,结果是字符串
    for times=2:7%依次计算2,3,4,5,6倍的数
        digits = unique(num2str(i*times),'sorted');
        if  ~isequal(digits_original,digits) %判断字符串是否相等,不相等则该数不正确,跳过
            break;
        end
    end
    if times==7 %如果所有倍数的组成数字与原数相同,这找到答案,答案是142857
        fprintf('The number is: %d\n',i);
        break;
    end
    i = i+1;
end
toc;

答案是142857,有用请采纳,谢谢!

clear all
clc

% parfor是并行计算,当命令行窗口出现答案就可以手动停止程序了,因为parfor不支持returnbreak
parfor i=1:1e+6
    nums1 = func(i);
    nums2 = func(2*i);
    nums3 = func(3*i);
    nums4 = func(4*i);
    nums5 = func(5*i);
    nums6 = func(6*i);
    if isequal(nums1,nums2)&&isequal(nums2,nums3)&&isequal(nums3,nums4)&&isequal(nums4,nums5)&&isequal(nums5,nums6)
        i
    end  
end

function nums = func(i)
    str = num2str(i);
    len = length(str);
    for j = 1:len
        nums(j)=str2double(str(j));
    end
    nums=unique(nums);
    nums = sort(nums);
end

img