zoukankan      html  css  js  c++  java
  • 实现100以内的素数输出(Python与C++对比)

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

    I can
  • 相关阅读:
    function 基础运用
    js基础知识2
    JavaScript的一些基础知识
    CSS3中2D3D转换、过渡、动画总结
    css的一些基础属性
    响应式布局和移动端开发
    css3动画
    美化盒子以及bootstrap的简单了解
    利用JS的双重for循环实现九九乘法表
    js练习:金字塔正星星与倒星星
  • 原文地址:https://www.cnblogs.com/leonwen/p/4802042.html
Copyright © 2011-2022 走看看