欧拉计划的例题解答

Python014

欧拉计划的例题解答,第1张

欧拉计划的第一题是:

列举出10以下所有3或5的倍数,我们得到 3, 5, 6 和 9。他们的和是23。

求1000以下所有3或5的倍数之和。

虽然这题比欧拉计划大多数题目要容易的多,我们仍然可以用它来分析不同解体方法的效率。

用穷举法来测试1000以下的所有自然数,再将它们相加就能得到这题的结果。这很容易实现,用以下两种不同的编程语言都能很快求解出答案。

Python:

print sum(filter(lambda x:x % 3 == 0 or x % 5 == 0, xrange(1, 1000)))

C++:

#include <iostream>

using namespace std

int main( ) {

int sum = 0

for (int i = 0i <1000i++)

if ( i % 3 == 0 || i % 5 == 0 )

sum += i

cout <<sum <<endl

return 0

}

但如果用排容原理进行求和,就可以减少1000多次运算。

Python 实现:

def sum1toN(n):

return n * (n + 1) / 2

def sumMultiples(limit, a):

return sum1toN((limit - 1) / a) * a

sumMultiples(1000, 3) + sumMultiples(1000, 5) - sumMultiples(1000, 15)

采用这种方法,计算10,000,000以下或1000以下所花费的时间是相等的。若用大O符号来描述两种方法的优劣,那么穷举算法为O(n)而高效的算法为O(1)。

开发一款操作系统,软件应用是需要用上编程语言的,要让计算机能够识别指令,才能实现功能的运行。市面上大部分的编程语言都来自国外,包括C++、Python、Java语言等等。有关的教科书,教材也是基于国外编程语言编写。

虽然有现成的编程语言可以用,可华为在建立全面自主的操作系统生态,编程语言又怎样可能落下呢?

华为传来了自研编程语言的好消息,或实现从根打破。除编程语言之外,还要在编译器、指令集、芯片等方面进行根源布局。

对此,华为在自研编程语言带来了怎样的好消息呢?华为从根打破,进展如何?

华为自研编程语言不是什么新鲜事,很早之前在网上就流传出华为自研编程语言的消息,并将其命名为“仓颉”。

从2022年8月份开始,华为申请了“仓颉语言”的商标,其中一项商标被驳回,但后来华为又再次申请。由此可见华为对这项“仓颉语言”的商标十分在意。

一开始外界并没有过多注意,只是觉得华为要开发某些项目,但随着时间的推移,有关“仓颉语言”是自研编程语言的消息越来越明确。

直到华为在2021全联接大会上表示,华为将在2022年正式推出自研的编程语言仓颉。这才真正看清了华为真的在努力开发自研编程语言。时至今日,进展如何呢?

6月16日,华为传来了自研编程语言的好消息,根据华为副总裁邓泰华表示,计划在下半年发布仓颉编程语言。

很多人都在等待这一刻,这一次华为瞄准编程语言或将从根打破。

编程语言准备了这么久,终于到了快要发布的时候了。尽管目前还没有具体的发布时间,究竟是下半年的几月几日还不确定,但这么多年都等过来了,还差这半年吗?

可以发现,只要是涉及到底层架构的根技术,华为几乎都有布局的身影。华为开发了鸿蒙,欧拉这两大国产操作系统,又推出了方舟编译器提高开发者效率,还有芯片平台的研发,让外界认识到华为不只是硬件实力强劲,软件技术的开发水平同样位居世界一流。

有人好奇这款华为自主研发的编程语言是不是使用中文,如果使用中文,岂不是意味着全球编程语言会迎来大洗牌?那么关于仓颉语言,究竟是怎样一个产品呢?

关于仓颉的消息华为并没有透露太多,但可以知道的是,仓颉将对应上层应用,支持多样化算力。

至于是否支持中文,基本上不太可能。计算机是国外发明的,二进制,指令集等一些技术架构的使用不会有太大的改变,在整个的编程环境中,大概率还是以英文为主。但也许华为真能独创中文编程语言也说不准,毕竟中文正逐渐走向世界。

华为全面转型软件产业,目前正在做的一些布局都和根技术有关,一旦成功,华为将掌握完全自主的软件生态环境。甚至改变国产信息技术产业的发展进程,让国产操作系统,编程语言等一系列根技术走向世界,建立属于中国的根技术开源社区。

华为或将从根打破,目前布局进展如何呢?先看操作系统。华为开发出鸿蒙,欧拉两大操作系统,一个是支持万物互联的物联网操作系统,另一个是面向数字基础设施的生态底座。截至目前鸿蒙系统拥有2.4亿用户,欧拉实现170万套的装机量。

开源系统已经建成,生态有序发展,华为开发的操作系统比想象中的还要好。

其次是编译器。华为对编译器的布局是推出了方舟编译器,主要功能是提供开发者统一的编译平台,让不同操作系统,应用程序能够适配统一识别的预言。华为在今年2月份发布了方舟编译器1.0版本。

芯片就不用多说了,大家都十分熟悉,不管是麒麟芯片还是面向数据中心的鲲鹏处理器,基本上在各大应用平台,终端市场都进行了系列芯片的开发。

还有就是编程语言了,这是华为掌握根技术的重点布局,为能够在下半年顺利发布,华为正努力开发,优化中,相信不会让大家等太久。

根技术远不止这些,国外花了几十年在计算机市场,信息技术体系建立起绝对的影响力。华为用了几年的时间就有了根技术自主可控的雏形,未来的前景不可限量。

华为正式官宣,自研的编程语言将在今年下半年发布。很多人没有意识到这件事的重要性,多少年以来编程语言一直被国外把持着,学习国外的知识的技术。现在华为独创编程语言,属于中国的信息技术时代终将到来。

对此,你有什么看法呢?