专栏首页申龙斌的程序人生通过欧拉计划学Rust编程(第71题)

通过欧拉计划学Rust编程(第71题)

由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾。

刷完欧拉计划中的63道基础题,能学会Rust编程吗?

“欧拉计划”的网址: https://projecteuler.net

英文如果不过关,可以到中文翻译的网站: http://pe-cn.github.io/

这个网站提供了几百道由易到难的数学问题,你可以用任何办法去解决它,当然主要还得靠编程,编程语言不限,论坛里已经有Java、C#、Python、Lisp、Haskell等各种解法,当然如果你直接用google搜索答案就没任何乐趣了。

这次解答的是第71题:

https://projecteuler.net/problem=71

题目描述:

有序分数

考虑形如n/d的分数,其中n和d均为正整数。如果n < d且其最大公约数为1,则该分数称为最简真分数。

如果我们将d ≤ 8的最简真分数构成的集合按大小升序列出,我们得到:

1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8 可以看出2/5是3/7直接左邻的分数。

将所有d ≤ 1,000,000的最简真分数按大小升序排列,求此时3/7直接左邻的分数的分子。

解题过程:

这道题实在太简单,根据分母找到最接近3/7的分子就行了,直接上代码。

fn main() {
    let mut max = 0.0;
    let mut numerator = 0;
    for d in 2..=1_000_000 { // 分母
        let n = d * 3 / 7;
        if n * 7 == d * 3 {
            continue;
        }
        let q = (n as f64) / (d as f64);
        if q > max {
            max = q;
            numerator = n;
            //println!("{} / {} = {}", numerator, denom, q);
        }
    }
    println!("{}", numerator);
}

--- END ---

我把解决这些问题的过程记录了下来,写成了一本《用欧拉计划学 Rust 编程》PDF电子书,请随意下载。

链接:https://pan.baidu.com/s/1NRfTwAcUFH-QS8jMwo6pqw

提取码:qfha

本文分享自微信公众号 - 申龙斌的程序人生(slbGTD)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 通过欧拉计划学Rust编程(第73题)

    由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾。

    申龙斌
  • 用欧拉计划学Rust编程(第26题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识。学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快...

    申龙斌
  • 用欧拉计划学Rust编程(第79题)

    网上银行常用的一种密保手段是向用户询问密码中的随机三位字符。例如,如果密码是531278,询问第2、3、5位字符,正确的回复应当是317。

    申龙斌
  • 爬虫进阶 | 点评网的反爬再也不是烦恼

    文章之前:其实做爬虫并不难,但难的是一些反爬,每个爬虫师都有要与反爬师做斗争,所以很多时候,爬虫易学难精就是这个缘故,你不知道那天工程师又弄出一种新的反爬策略,...

    叫我龙总
  • 【绘图】高维数据可视化必备图形-平行坐标图

    正如在这个图形中,可以清晰的看到,某些观察值随着组别的变化而产生的变化。不过,随着基因组大数据的不断发展和应用,在很多科研绘图场景中,高维数据的处理变得越来越重...

    用户6317549
  • [QT]获取鼠标坐标以及按键响应

    原文链接:https://blog.csdn.net/humanking7/article/details/80707591

    祥知道
  • 进入不熟悉的领域,如何开展数据分析

    进入5月,同学们陆续入职新公司,很多人咨询如何在不熟悉的领域开展数据分析工作。这个问题很普遍,很多转行的同学在面试时就有被问到:“在不熟悉的领域做数据分析,你要...

    接地气的陈老师
  • SOA和微服务架构的区别

    微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成...

    哲洛不闹
  • HDFS safemode

    处于safemode的集群是无法接收任何写操作的,包括创建目录、删除文件、修改文件、上传文件等等。hdfs集群在启动和关闭的时候一般会有一段时间处于safemo...

    用户1621453
  • Netty 源码阅读入门实战(三)-服务端启动

    JavaEdge

扫码关注云+社区

领取腾讯云代金券