对任一个正整数,经过处理最后变为1的matlab代码实现

本文介绍了使用MATLAB代码实现Collatz猜想的过程,通过循环处理随机选取的正整数,直至其变为1,并找到处理链最长的数及其链长。代码包括了存储每个数处理链的版本。
摘要由CSDN通过智能技术生成
%%从1到一百万中随机取出一个正整数n,如果n是偶数,则n=n/2,如果n是基数,则n=3*n+1;
% 经过多次处理,使得n最后的取值为1时终止。求出这个处理链最长的那个数。
%举个例子:如n=3,那么处理链为 3-10-5-16-8-4-2-1,链长为8.
%2017/9/20,

%以下是代码实现:
num=zeros(1000000,1);
chain_1=zeros(1,1000000);
for ii=1:1000000
    jj=ii;
    count=1;
    while 1
        if (jj==1)
            num(ii)=count;
            break
        end
        if mod(jj,2)==0
            count=count+1;
            jj=jj/2;
        else
            count=count+1;
            jj=jj*3+1;
        end
    end
end
max1=(max(num));
jj=max1;
count=1;
while 1
    if (jj==1)
        num(ii)=count;
        chain_1(count)=jj;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值