在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
今天从链接http://www.2cto.com/kf/201302/187699.html中看到了Python实现100以内的素数输出的算法,颇受感触。尤其是被其中的Python的列表生成器的使用方式帅到了! 看完Python的算法实现之后,先是回到老本行用C++实现了一遍,通过对比,你就可以发现Python真的是太简洁了!!! 1 /* 2 题目:100以内的素数输出算法验证 3 时间:2015年9月11日 4 作者:LeonWen 5 */ 6 7 #include "stdafx.h" 8 #include<math.h> 9 #include<iostream> 10 using namespace std; 11 12 bool IsPrime(int x) 13 { 14 if (x == 2) 15 { 16 return true; 17 } 18 int k = sqrt(x); 19 for (int i = 2; i <= k + 1; i++) 20 { 21 if (x % i == 0) 22 { 23 return false;//可以被整除,说明不是素数 24 } 25 } 26 return true; 27 } 28 29 int _tmain(int argc, _TCHAR* argv[]) 30 { 31 int N = 100; 32 for (int i = 2; i <= N; i++) 33 { 34 if (IsPrime(i)) 35 { 36 cout << i << " "; 37 } 38 } 39 return 0; 40 } 那么,在Python中又是怎么实现的呢? 在此之前,要是想要单纯的把C++代码用Python逐行翻译归来也是可行的,但这体现不出Python的奇淫巧计之处,故不在此处赘述。直接上述参考链接中的例子: 1 from math import sqrt 2 N = 100 3 list = [p for p in range(2,N) if 0 not in [p % d for d in range(2,int(sqrt(p)) + 1)]] 4 print list 反正我看到这段代码之后的第一感觉是被惊艳到了! 也第一次体会到为什么别人说Python写出来的代码就像是在写英语一样,虽然谈不上多么深度的内容,也很easy,但是确实颇令我对Python心生好感。 对此处的判别素数的算法做一个简单的叙述或许就更加能体会到了。
算法概述: 判别一个数x是否为素数,我们只需要判别在2~sqrt(x)之间是否存在着某一个数k,使得x可以整除k。倘若可以整除,那么该数x就不是素数;反之,则为素数。
理解了算法,再回过头去对比看C++和Python在实现过程中的代码,Python代码的第三行语句简直就是一个翻译啊!!! 好久没用过C++了,发现C++确实要求很标准,也很规范。也算是额外的一点小体会吧~~~ 明天周末啦~~~
原文链接:http://www.cnblogs.com/leonwen/p/4802042.html |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论