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


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

查看所有标签

猜你喜欢:

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

Distributed Systems

Distributed Systems

Sukumar Ghosh / Chapman and Hall/CRC / 2014-7-14 / USD 119.95

Distributed Systems: An Algorithmic Approach, Second Edition provides a balanced and straightforward treatment of the underlying theory and practical applications of distributed computing. As in the p......一起来看看 《Distributed Systems》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具