欧拉计划 第十二题 matlab 学习笔记mod()+rem()+for()+while()

完全参考:https://blog.csdn.net/qq_38910271/article/details/83041822

matlab中rem与mod的区别 https://blog.csdn.net/tiredoy/article/details/38380247

tic
a = 0;
k = 1; %计数
t = 1; %第一个三角数
i = 0; %因子个数
 while i < 500            %当因子数小于500的时候,运行下列命令
 
    //计算三角数t的因子个数
     for j = 1:t           %j=1到t(被除数)
        if mod(t,j) == 0   %如果三角数除以j为整数,因子数加一
            i = i + 1
        end
     end
     
     //判断因子个数是否超过500,不超过因子计数归零,新一轮
    if i < 500     %如果因子数i小于500
        i = 0      %归零,因子数重新记为0
        k = k + 1  %新一轮增加的自然数
        a = 1:k    %数列a加到k+1
        t = sum(a) %数列a求和 下一个三角数
    else
        disp(t)    %否则,也就是i>500 就输出三角数t
        break
    end
    
end
t
toc
        

结果 :76576500(没有自己跑,不过题干验证是对的,不超过5个因子, 为28)

ps:针对为什么要在循环最开始用while的问题。
(当然最直接的是,不同while,不循环,只走一遍,不根据新的t,循环for结构)

可能原因,for循环要求循环次数是确定的,预先给定次数。
这里的for循环次数随t更新:j = 1:t
while 循环:在一个逻辑条件的控制下重复执行一组语句一个不定的次数(书本原句摘抄)

总结一下
for 给定循环次数
while 不定循环次数

你可能感兴趣的:(欧拉计划 第十二题 matlab 学习笔记mod()+rem()+for()+while())