永发信息网

pell方程 x²-2y²=-1(y<=35000)的所有正整数解

答案:1  悬赏:70  手机版
解决时间 2021-05-05 12:02
  • 提问者网友:玫瑰园
  • 2021-05-05 08:22

麻烦麻烦,感谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

最佳答案
  • 五星知识达人网友:英雄的欲望
  • 2021-05-05 08:34

这个其实是一个pell方程,可以用数论里面的知识来求解!但是对于你所给的范围,可以直接利用枚举来求解!总共有7组解
x=1 y=1
x=7 y=5
x=41 y=29
x=239 y=169
x=1393 y=985
x=8119 y=5741
x=47321 y=33461
可以利用C语言来求解
#include <stdlib.h>
#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
    //x^2-2*y^2=-1 y<=35000;
    long long x,y,i,temp,temp1,temp2;
// 如果用的是Vc的话,把long long 换成__int64,输出用%I64d代替
    int num=0;
    for(y=1;y<=35000;y++)
    {
    temp=2*y*y;
    temp-=1;
    x=(long long)(sqrt(double(temp)));
    //printf("%lld %lld\n",x,y);
    if(x*x==temp)
    {
    num++;
    printf("x=%lld y=%lld\n",x,y);
    }
    }
    printf("%d\n",num);
    return (EXIT_SUCCESS);
}
看你这个数数学实验的问题,一般还是用matlab写吧,其实也是一样的,改一下就可以了,代码如下:
num=0;
for y=1:35000
    temp=2*y*y-1;
    temp1=sqrt(temp);
    x=floor(temp1);
    if x*x==2*y*y-1
    num=num+1;
    x,y
  end;
end;
num


参考资料: http://zhidao.baidu.com/question/152438519.html?si=2

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯