好奇的数字

2016年6月28日

今天的练习是欧拉计划,所以规则是,你的解决方案使用的计算机时间不得超过一分钟,在你自己找到答案之前,你不能偷看解决方案。

有些数字具有奇怪的性质,当它们平方时,数字出现在乘积的最小有效数字中。例如,6252= 390625和71063762= 50543227109376

所有小于10的数字之和是多少20有这种奇怪的特性?

你的任务是找到上面描述的总和。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

电话号码和素因子

2016年6月24日

约翰·库克是一位数学家和程序员引人入胜的博客我经常去的地方。

库克最近有一个文章关于电话号码的主要因素。他解释说,对于美国使用的10位数电话号码,不同素数因子的平均数为3.232,分布在1到5个不同素数因素之间,约占73%的时间。

您的任务是编写一个函数,该函数确定一个数字的不同素数因子的数量,并使用该函数探索一系列电话号码中不同素数因数的数量分布。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

两个面试问题

2016年6月21日

我喜欢阅读一个名为职业杯,既可以享受其中给出的一些编程练习,也可以为编程实践找到练习。在我写这篇练习时,下面是关于职业杯的两个最新练习:

  • 给定一个函数兰特2如果返回0或1的概率相等,则编写一个函数兰特3以相等的概率返回0、1或2,仅使用兰特2作为随机数的来源。
  • 给定一组字符和一个单词词典,在包含该组字符的词典中查找最短的单词。如果是平局,请返回长度相同(最短)的所有单词。

您的任务是编写上述两个程序。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

坂本友彦的日-周算法

2016年6月17日

在这里是坂本计算一周中哪一天的算法,取自介绍代码的注释:

公元1月1日是公历的星期一。
因此,公元1月0日是星期天[从技术上讲并不存在]。

每四年我们有一个闰年。但xy00不能是一个跳跃,除非xy用0除4。

y/4–y/100+y/400:这给出了从1AD到给定年份的闰年数。由于每年有365天(将7除以1),除非是闰年或日期是1月或2月,否则给定日期的日期每年更改1天。在其他情况下,它会增加2。

y-=m Soy+y/4–y/100+y/400表示年份的1月0日(上一年的12月31日)。(这会提醒您在给定年份开始之前已经过去了7天。)

数组t:月份“m+1”开始之前经过的天数。

所以t[m-1]+d是“y”年到给定日期的天数。

(y+y/4–y/100+y/400+t[m-1]+d)%7是从1月1日到给定日期(即当天)的天数提醒(0=周日,6=周六)。

int dow(int y,int m,int d){静态intt[]={0,3,2,5,0,3、5,1,4,6,2,4};y-=m<3;返回(y+y/4-y/100+y/400+t[m-1]+d)%7;}

给出了另一个描述在这里

您的任务是编写一个程序来实现上面所示的每日算法。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

数组中的重复项

2016年6月14日

今天的练习分为两部分,首先是一个常见的编程练习,然后是它的变体;练习的起源当然是某人的家庭作业,但由于今年放学,我们今天做练习并不重要。

首先,编写一个程序,给定一个未排序的整数数组,在数组中查找单个重复的数字。例如,给定输入[1,2,3,1,4],正确的输出为4。

其次,编写一个程序,给定一个未排序的整数数组,查找数组中所有重复的数字。例如,给定输入[1,2,3,1,2,4,1],正确的输出是[1,2,1]。

您的任务是编写两个在数组中查找重复项的程序。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

线性回归

2016年6月10日

线性回归是一种广泛使用的统计技术,用于关联两组变量,传统上称为x个; 目标是找到最适合的产品线,= x个+b条,这两组关系最密切。计算最佳拟合线的公式如下:

= (n个× Σxy公司− Σx个× Σ) ÷ (n个× Σx个2− (Σx个)2)

b条 = (Σ负极 × Σx个n个

你可以在任何统计教科书中找到这些公式。例如,给定变量集

x年60   3.161   3.662   3.863   4.065   4.1

最佳拟合线为= 0.1878x个−7.9635,以及失踪人员的估计价值x个=64等于4.06。

您的任务是编写一个程序,计算两组变量x和y的斜率m和截距b。完成后,欢迎使用阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

哥德巴赫的其他猜想

2016年6月7日

克里斯蒂安·哥德巴赫(1690-1764)是普鲁士数学家,与欧拉同时代。数论中最著名的未经证实的猜想之一是哥德巴赫猜想表示每一个大于2的偶数都是两个素数的和;例如,28=5+23。我们在一个上一次练习

虽然它并不广为人知,但哥德巴赫提出了另一个猜想:每一个大于2的奇数都是一个素数和一个平方的两倍之和;例如,27=19+2*(2**2)。(这个猜想有时被表述为每个奇数复合数是一个素数和两倍于一个平方的和,因为它是以0作为所有素数的平方根的平凡真理;或者,它有时受到限制,以至于被平方的数字必须是正的,在这种情况下,有一些奇数素数可以这样表示。)可悲的是,很容易找到一个反例来反驳哥德巴赫的其他猜测。

你的任务是编写一个程序,找出反驳哥德巴赫其他猜想的最小数字。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

几十行代码

2016年6月3日

今天的练习表明,有时用一点点就能做很多事情。

您的任务是用不超过十几行的代码编写一些有趣而有用的程序。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2