• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

实现100以内的素数输出(Python与C++对比)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

今天从链接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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
linux下安装或升级GCC4.8.2,以支持C++11标准[转]发布时间:2022-07-14
下一篇:
C#将XML导入到ACCESS数据库发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap