m0_61684943 2021-10-20 14:47 采纳率: 73.8%
浏览 22
已结题

关于MATLAB的一个程序算法

img


例如10进制的3位自恋数
153=1的三次方+5的三次方+3的三次方
用简单一点的函数及思想执行!
每一句进行解释!

  • 写回答

1条回答 默认 最新

  • CSDN专家-Matlab_Fans 2021-10-20 22:16
    关注

    函数

    function [Nmat,Dmat] = Nacissitic( base,n )
    % base进制,取值2-10
    % n位数
    % Nmat为base进制的自恋数,Dmat为自恋数对应的十进制取值
    % Nmat和Dmat为[]时表示无解
    
    Ns = ['1' repmat('0',1,n-1)];         % 初始判断数
    
    jj = 1;
    temp = 1;
    Nmat = [];
    Dmat = [];
    while temp
        [flag,D] = Fun_Judge( Ns,base );  % 判断是否为自恋数
        if flag                           % 有解时保存结果
            Nmat{jj} = Ns;
            Dmat{jj} = D;
            jj = jj + 1;
        end
        
        for ii = n:-1:1    % 生成下一个判断数
            if str2num(Ns(ii))+1 < base
                Ns(ii) = num2str( str2num(Ns(ii))+1 );
                if ii~=n
                    Ns(ii+1) = num2str( 0 );
                end
                if ii == 1       % 无解时
                    temp = 0;
                end
                break;
            end
        end
    end
    
    end
    
    
    
    
    
    function [flag,D2] = Fun_Judge( Ns,base )
    % 判断base进制的Ns数是否为自恋数
    % flag为是否自恋数的标识,D2为自恋数的十进制取值
    
    n = length(Ns);
    D1 = base2dec( Ns,base );
    D2 = 0 ;
    for ii = 1:n
        D2 = D2 + str2num(Ns(ii))^n;
    end
    
    flag = ( D1 == D2 );
    
    end
    

    结果验证:
    3位十进制数

    [Nmat,Dmat] = Nacissitic( 10,3 )
    

    结果

    Nmat =
    
      1×1 cell 数组
    
        {'153'}
    
    
    Dmat =
    
      1×1 cell 数组
    
        {[153]}
    
    

    4位十进制数

    Nmat =
    
      1×1 cell 数组
    
        {'1634'}
    
    
    Dmat =
    
      1×1 cell 数组
    
        {[1634]}
    

    三位三进制数

    Nmat =
    
      1×1 cell 数组
    
        {'122'}
    
    
    Dmat =
    
      1×1 cell 数组
    
        {[17]}
    
    

    三位八进制数

    Nmat =
    
      1×1 cell 数组
    
        {'134'}
    
    
    Dmat =
    
      1×1 cell 数组
    
        {[92]}
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月10日
  • 已采纳回答 11月10日
  • 创建了问题 10月20日

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行