实现100以内的素数输出(Python与C++对比)
今天从链接http://www.2cto.com/kf/201302/187699.html中看到了Python实现100以内的素数输出的算法,颇受感触。尤其是被其中的Python的列表生成器的使用方式帅到了!
看完Python的算法实现之后,先是回到老本行用C++实现了一遍,通过对比,你就可以发现Python真的是太简洁了!!!
/*
题目:100以内的素数输出算法验证
时间:2015年9月11日
作者:LeonWen
*/ #include "stdafx.h"
#include<math.h>
#include<iostream>
using namespace std; bool IsPrime(int x)
{
if (x == )
{
return true;
}
int k = sqrt(x);
for (int i = ; i <= k + ; i++)
{
if (x % i == )
{
return false;//可以被整除,说明不是素数
}
}
return true;
} int _tmain(int argc, _TCHAR* argv[])
{
int N = ;
for (int i = ; i <= N; i++)
{
if (IsPrime(i))
{
cout << i << " ";
}
}
return ;
}
那么,在Python中又是怎么实现的呢?
在此之前,要是想要单纯的把C++代码用Python逐行翻译归来也是可行的,但这体现不出Python的奇淫巧计之处,故不在此处赘述。直接上述参考链接中的例子:
from math import sqrt
N = 100
list = [p for p in range(2,N) if 0 not in [p % d for d in range(2,int(sqrt(p)) + 1)]]
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
实现100以内的素数输出(Python与C++对比)的更多相关文章
- 1.2输出100以内的素数&输出前100个素数。
输出100以内的素数只是一个嵌套,在1.1的基础上添加一层循环,只需要注意从2开始,并且变量需要换一个. #include<stdio.h> int main() { ; ; i < ...
- Python练习题 026:求100以内的素数
[Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...
- 用python计算100以内的素数
用python计算100以内的素数 : break else: list.append(i)print(list)
- python、C++经典算法题:打印100以内的素数
题目 打印100以内的素数 思路1 素数的特点: 素数一定是奇数 一个数如果是合数,那么它一定能够被2到这个合数的开平方内的某个素数整除(这个特点是提升效率的关键) 一个数如果不能被从2到它自身开平方 ...
- oracle中plsql练习-----在控制台输出1到100以内的素数。
一.思路:首先需要知道素数的概念即质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 中心思想是,外循环所有的自然数,内循环折半查询,增加代码的速度,注意:从1开始,需要大于1,但是pl ...
- 求出100以内的素数(java实现)
j package test1; //2018/11/30 //求100以内的所有素数 public class Main10 { public static void main(String[] a ...
- 斐波那契数列(递归)&求100以内的素数
Java 5 添加了 java.util.Scanner 类,这是一个用于扫描输入文本的新的实用程序.它是以 前的 StringTokenizer 和 Matcher 类之间的某种结合.由于任何数据都 ...
- Java例题_27 100以内的素数
1 /*27 [程序 27 求素数] 2 题目:求 100 之内的素数 3 */ 4 5 /*分析 6 * 素数:是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 7 * 同第二题: ...
- C语言实践 输出100以内的素数
int main() { int isprime = 1; for (int i = 2; i < 101; i++) { isprime = 1;//要确保每次循环都要把这个值设置为1,不然上 ...
随机推荐
- Dapper - 一款轻量级对象关系映射(ORM)组件,DotNet 下
Dapper - a simple object mapper for .Net Official Github clone: https://github.com/SamSaffron/dapper ...
- jetty9部署
https://blog.51cto.com/5404542/1751702 Jetty 9部署web应用 Jetty相关的文章比较少,不过官方文档挺齐全的.做下记录也是好事. jetty9跟 ...
- 2019-9-18-WPF-如何调试-binding
原文:2019-9-18-WPF-如何调试-binding title author date CreateTime categories WPF 如何调试 binding lindexi 2019- ...
- C#学习之委托与事件
委托 语法: public delegate void MyDelegate(); 使用: 1.定义委托----public delegate void MyDelegate(); 2.注册委 ...
- UWP使用TreeView
这个帖子本来是不想写的,但是感觉网上类似的也没有,对于小白可能有点用,于是想着还是写一下吧. 写之前想说下,UWP其实并没有死掉,对于win10来说,以后的新设备肯定是支持UWP的,而且微软一直在完善 ...
- mockjs 在项目中vue项目中使用
一.为什么要使用mockjs 总结起来就是在后端接口没有开发完成之前,前端可以用已有的接口文档,在真实的请求上拦截ajax,并根据mockjs的mock数据的规则,模拟真实接口返回的数据,并将随机的模 ...
- Java基础—实现多线程的三种方法
Java虚拟机(JVM,是运行所有Java程序的抽象计算机,是Java语言的运行环境)允许应用程序并发地运行多个线程.在Java语言中,多线程的实现一般有以下三种方法: 1.实现Runnable接口, ...
- Tomcat 配置介绍
参数说明: maxThreads: 最大可以创建请求的线程数 minSpareThreads: 服务启动时创建的处理请求的进程数 Connector中的port: 创建服务器端的端口号,此端口监听用户 ...
- requests---HTTPS请求
做过接口测试的都会发现,现在的接口都是HTTPS协议了,今天就写一篇如何通过request发送https请求,如果不是很了解HTTP协议的同学可以看下我的另外一篇博客什么是HTTP 什么是HTTPS ...
- Rust中的结构体及方法语法
这个可以和类作比较,或是go当中的方法比较. #[derive(Debug)] struct Rectangle { width: u32, height: u32, } impl Rectangle ...