m0_70869672 2022-05-17 20:24 采纳率: 75%
浏览 205
已结题

请问如何用matlab找到大于10^15的最小正整数n,这个n要同时满足2n+1和3n+1是平方数?

请问如何用matlab找到大于10^15的最小正整数n,这个n要同时满足2n+1和3n+1是平方数?(举个例子,3960就满足这个性质,2x3960+1=89^2,3x3960+1=109^2)如图,我目前想到的是大致确定n的范围(乱定的),导致速度缓慢,无法求解。

img

  • 写回答

3条回答 默认 最新

  • czy1219 2022-05-18 22:34
    关注

    历时 1.810428 秒,计算完毕!

    img

    代码如下:

    clear all
    clc
    format long
    
    tic
    % 确定平方数的范围
    a = round(sqrt(2*(1e+15)+1));
    b = round(sqrt(3*(1e+16)+1));
    
    len = b-a;
    nums1 = zeros(len,1);
    nums2 = zeros(len,1);
    
    % 穷举由平方数经过变换后产生在10^15-10^16之间的数
    j = 1;
    for i = a:b
        nums1(j)=(i^2-1)/2;
        nums2(j)=(i^2-1)/3;
        j = j+1;
    end
    
    % 找出两个数组中第一个相同的数,就是满足条件的最小整数
    i = 1; j=1;
    while(i<=len&&j<=len)
        if(nums1(i)==nums2(j))
            disp(['满足条件的最小整数为:' num2str(nums1(i))]);
            break;
        end
        if(nums1(i)<nums2(j))
            i = i +1;
        else
            j = j + 1;
        end
    end
    toc
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月21日
  • 已采纳回答 5月19日
  • 赞助了问题酬金10元 5月19日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计