打印

【一个数学问题】丢番图倒数

[复制链接]
2210|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2014-10-17 11:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
keer_zu|  楼主 | 2014-10-17 11:44 | 只看该作者
本帖最后由 keer_zu 于 2014-10-17 16:51 编辑

我算的结果:
num:1071   NO.: 240240

也就是240240,有1071个解。

不知道对不对。

又算了一下是这个:
num:1013   NO.: 180180
180180           1013个

使用特权

评论回复
板凳
keer_zu|  楼主 | 2014-10-17 11:46 | 只看该作者
我的计算:

#include <stdio.h>


int IsResult(unsigned long xin,unsigned long nin)
{

        double res,den,num;

       
        den = (double)(xin - nin);
        num = (double)(xin * nin);

        res = num/den;

        if(res - (int)res < 0.00000001)
                return 0;
        else
                return -1;
}

unsigned int GetResultNum(unsigned long nin)
{
        unsigned int resault_num;
        unsigned long xin;

        resault_num = 0;

        for(xin=nin + 1;xin <= nin * 2;xin ++){
                if(IsResult(xin,nin) == 0)
                        resault_num += 1;
        }

        return resault_num;
}




int main(void)
{
        unsigned int num;
        unsigned long i;


        for(i = 4;i < 0xfffffffe;i ++){
                num = GetResultNum(i);
                if(num >= 1000){
                        printf("num:%d   NO.: %ld\n",num,i);
                        return 0;
                }
        }

        printf("unsigned long yichu!\n");

        return 0;
}

使用特权

评论回复
地板
keer_zu|  楼主 | 2014-10-17 14:01 | 只看该作者
#include <stdio.h>


int IsResult(unsigned long xin,unsigned long nin)
{

        double res,den,num;

       
        den = (double)(xin - nin);
        num = (double)(xin * nin);

        res = num/den;

        if(res - (long)res < 0.00000001)
                return 0;
        else
                return -1;
}


int GetResult(unsigned long xin,unsigned long nin,unsigned long *y)
{

        double res,den,num;

       
        den = (double)(xin - nin);
        num = (double)(xin * nin);

        res = num/den;

        if(res - (unsigned long)res < 0.00000001){
                *y = (unsigned long)res;
                return 0;
        }else
                return -1;
}



unsigned int GetResultNum(unsigned long nin)
{
        unsigned int resault_num;
        unsigned long xin;

        resault_num = 0;

        for(xin=nin + 1;xin <= nin * 2;xin ++){
                if(IsResult(xin,nin) == 0)
                        resault_num += 1;
        }

        return resault_num;
}

int ViewResult(unsigned long nin)
{
        unsigned int resault_num;
        unsigned long xin;
        unsigned long y;

        resault_num = 0;

        for(xin=nin + 1;xin <= nin * 2;xin ++){
                if(GetResult(xin,nin,&y) == 0){
                        printf(" (%ld,%ld)",xin,y);
                }
        }

        printf("\n\n");

        return 0;
}




int main(void)
{
        unsigned int num;
        unsigned long i;


        for(i = 4;i < 0xfffffffe;i ++){
                num = GetResultNum(i);
                if(num >= 1000){
                        printf("num:%d   NO.: %ld\n",num,i);

                        ViewResult(i);
                       
                        return 0;
                }
        }

        printf("unsigned long yichu!\n");

        return 0;
}

使用特权

评论回复
5
mylsf| | 2014-10-17 16:15 | 只看该作者
我得到1094在240240的时候

使用特权

评论回复
6
mylsf| | 2014-10-17 16:17 | 只看该作者
最起码少了(480480,480480)

使用特权

评论回复
7
mylsf| | 2014-10-17 16:19 | 只看该作者
361515
361920
362208
362544
362934
363440
364455
365040
366080
366366
366960
367290
367640
368368
368940
369600
370032
370370
371280
372372
372736
374088
374640
375440
375760
377520
378224
378840
379632
379665
380380
381360
381810
382200
382536
383383
383565
384384
385440
385840
388080
388465
388960
389298
390000
390390
391248
391664
  392340
  392700
  393120
  394394
  395120
  395472
  396396
  397040
  397540
  398640
  400400
  401940
  402480
  402864
  403312
  403832
  404040
  404976
  405405
  405860
  407550
  408408
  409640
  410592
  411840
  412720
  414480
  414960
  415415
  416416
  416640
  417648
  417690
  418110
  418704
  420420
  422422
  423280
  423696
  424281
  425040
  426140
  427440
  428400
  429000
  429520
  429968
  430815
  431340
  432432
  433840
  434280
  434928
  435435
  438438
  438984
  440440
  441584
  441840
  443040
  443520
  444080
  444730
  446160
  447216
  447265
  448448
  449904
  450450
  451440
  453180
  453684
  455840
  456560
  457072
  458040
  458640
  460460
  462000
  463320
  464464
  465465
  466752
  467376
  469040
  469560
  471471
  472560
  474474
  475440
  476190
  476840
  477400
  478192
  480480

这些都是符合要求的X值,Y值得自己算

使用特权

评论回复
8
keer_zu|  楼主 | 2014-10-17 16:52 | 只看该作者
mylsf 发表于 2014-10-17 16:17
最起码少了(480480,480480)

我后边算的是:
num:1013   NO.: 180180

使用特权

评论回复
9
mylsf| | 2014-10-18 08:09 | 只看该作者
本帖最后由 mylsf 于 2014-10-18 08:29 编辑

240240我的有错误

180180得到的一样

使用特权

评论回复
10
mylsf| | 2014-10-18 09:14 | 只看该作者
本帖最后由 mylsf 于 2014-10-18 10:11 编辑
keer_zu 发表于 2014-10-17 14:15
哪位验证一下?
ok

使用特权

评论回复
11
keer_zu|  楼主 | 2014-10-30 17:48 | 只看该作者

使用特权

评论回复
12
keer_zu|  楼主 | 2014-11-21 18:20 | 只看该作者
mylsf 发表于 2014-10-18 09:14
ok

更多解法在这里面

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1352

主题

12436

帖子

53

粉丝