Project Euler 57–Square root convergents

栏目: 编程工具 · 发布时间: 6年前

内容简介:It is possible to show that the square root of two can be expressed as an infinite continued fraction.1 + 1/2 = 3/2 = 1.5

Square root convergents

It is possible to show that the square root of two can be expressed as an infinite continued fraction.

√ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + … ))) = 1.414213…
By expanding this for the first four iterations, we get:

1 + 1/2 = 3/2 = 1.5

1 + 1/(2 + 1/2) = 7/5 = 1.4

1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666…

1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379…

The next three expansions are 99/70, 239/169, and 577/408, but the eighth expansion, 1393/985, is the first example where the number of digits in the numerator exceeds the number of digits in the denominator.

In the first one-thousand expansions, how many fractions contain a numerator with more digits than denominator?

平方根逼近

2的平方根可以用一个无限连分数表示:

√ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + … ))) = 1.414213…
将连分数计算取前四次迭代展开式分别是:

1 + 1/2 = 3/2 = 1.5

1 + 1/(2 + 1/2) = 7/5 = 1.4

1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666…

1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379…

接下来的三个迭代展开式分别是99/70、239/169和577/408,但是直到第八个迭代展开式1393/985,分子的位数第一次超过分母的位数。

在前一千个迭代展开式中,有多少个分数分子的位数多于分母的位数?

//(Problem 57)Square root convergents
// Completed on Wed, 12 Feb 2014, 04:45
// Language: C
//
// 版权所有(C)wu yudong 
// 博客地址:http://www.wuyudong.com
#include<stdio.h>

int add(int des[],int n1,int src[],int n2){
    int i,f;
    for(i=0 , f = 0 ; i < n1 || i < n2 ; i++){
        des[i] += ( f + src[i] ) ; 
        f = des[i]/10 ; 
        des[i] %= 10 ;
    }
    if(f)
        des[i++] = f ; 
    return i;
}
int main(){ 
    int num = 1 ,sum = 0 , k;
    int array[2][500] = {0} ; 
    int nn = 1 ,dn = 1 , f = 0 ;//nn分子长度,dn分母长度,f分子位置

    array[0][0] = 3 ;
    array[1][0] = 2 ;
    while(num<1000){ 
//分子加分母放到分子位置成为下一个分母
    k = add(array[f],nn,array[1-f],dn);
//分子加分母放到分母位置成为下一个分子
    nn = add( array[1-f],dn,array[f],k ) ; 
    dn = k ;
    f = 1 - f ; 
    if(nn > dn) sum++;
    num++;
    }
    printf("%d\n",sum);
    return 0;
}

Answer: 153

Completed on Wed, 12 Feb 2014, 12:45


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

设计模式之禅(第2版)

设计模式之禅(第2版)

秦小波 / 机械工业出版社 / 2014-2-25 / 89.00元

本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第1版2010年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。第2版在第1版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中......一起来看看 《设计模式之禅(第2版)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具