我来自Java,正在努力学习Python。我首先在Java中实现了Sieve of Eratosthenes算法,然后在Python中实现了。我的Java实现运行得相当快,我可以在大约25秒内找到10亿以下的所有素数。我的Python实现可能需要2个小时来完成同样的事情。在

我在这里包含了这两个实现。我的问题是:为什么Python的实现要慢得多?(我知道我做错了什么)

Python有没有可能像Java一样快呢?在

我假设在Python实现中使用列表是慢的,但是我对Python太陌生了,不知道如何解决这个问题。在

爪哇语:/**

* Creates a boolean array of a specified size with true values at prime indices and

* false values at composite indices.

*/

private static boolean[] sieve(int size){

boolean[] array = new boolean[size];

//Assume all numbers greater than 1 are prime//

for(int i = 2; i < array.length; i++){

array[i] = true;

}

//Execute Sieve of Eratosthenes algorithm//

for(int p = 2; p < size; p = nextPrimeInArray(array, p)){

for(int i = p + p; i < size; i += p){

array[i] = false; // i.e., mark as composite

}

}

return array;

}

/**

* Finds the next index in the array that is not marked composite

*/

public static int nextPrimeInArray(boolean[] array, int p){

do{

p++;

}while(p < array.length && !array[p]);

return p;

}

Python:

^{pr2}$

python列表和数组区别java_Python列表与Java数组效率相关推荐

  1. java数组可扩展_[转载]Java数组扩容算法及Java对它的应用

    Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arr ...

  2. python列表字典的区别_python列表和字典区别

    列表 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的 2.通过偏移读取 组成列表的值叫做元素(Elements).每一个元素被标识一个索引,第一个索引是0,序列的功能都能实现 ...

  3. c++随机打乱数组_第四天 Java 数组与排序

    一. 数组 数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理. 数组的常见概念 数组名 下标(或索引) 元素 数组的长度 数组 ...

  4. java创建数组并赋值_「java 数组」Java创建数组的方法 - seo实验室

    java 数组 最近学java,一点小心得,希望和大家分享一下,第一次写文章,写的不好希望大家谅解,当然我也会尽力写好这篇文章! Java创建数组的方法大致有三种 说明:这里以int为数据类型以arr ...

  5. java一维数组的特点,数据结构:java数组特点以及声明数组类

    JAVA数组的特点:动态数组,具有长度属性length,引用数据类型 动态数组是指,在声明数组变量之后,使用new运算符动态申请指定容量(存储单元个数)的数据存储空间:当数组不再被使用时,java将自 ...

  6. java android 数组_Android开发基础之Java 数组

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...

  7. Java数组在方法区吗,Java数组的操作方法

    遍历 使用for循环遍历数组/取出数组的值 例子1,使用普通的for循环遍历数组并取出数组的值与索引: public class Test { public static void main(Stri ...

  8. java中的数组增删查改操作,java数组实现增删改查

    java 实现动态数组,Java工具类Arrays中不得不知的常用方法,数组实现队列java,java数组实现增删改查 java 增删改查代码 import java.sql.Connection; ...

  9. 北大青鸟java数组_北大青鸟:Java 数组解说(1)

    北大青鸟:Java 数组解说(1) 时间:2016-01-26 14:25:13 来源: 作者:小狮 已有人浏览 导语 声明数组变量首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法 ...

最新文章

  1. Podman中如何运行一个 Linux 虚拟机?
  2. Oracle RMAN备份深入解析--联机备份
  3. 无偏方差为什么除以n-1
  4. opencv下载安装及介绍【初学,后续继续更新】
  5. OpenGL GLFX开放GL效果库
  6. java线程基础巩固---线程生命周期以及start方法源码剖析
  7. LOJ#6284. 数列分块入门 8
  8. 基于 OpenCV 的图像阴影去除,你会吗?
  9. 牛b硬件信息修改大师_比X大师更靠谱?一款真正良心的硬件检测工具
  10. 计算机专业电路基础高考试卷,计算机专业电路基础试题(4页)-原创力文档
  11. 在MonthCalendar控件中选中日期
  12. 2019:自我觉醒的一年
  13. syslog配置及测试
  14. 设计模式之简单工厂模式与策略模式
  15. 如何搭建一个团队(一)
  16. C++中四种cast转换
  17. 大数据之hive:hive分桶表
  18. linux原理与应用 武汉大学,Linux原理与应用 郑鹏 武汉大学出版社 9787307060876
  19. 全栈Python自动化测试学习资料【付费资源、看到即赚到,】
  20. mac使用git管理Github以及生成 SSH 公钥

热门文章

  1. How to remove k__BackingField from Json data
  2. jq中使用promise封装ajax
  3. 【训练题】分队 P1672
  4. echarts设置网格线颜色
  5. The type 'System.Object' is defined in an assembly that is not referenced
  6. 多路I/O转接之select模型
  7. 关于Cococs中的CCActionEase(下)
  8. ubuntu 上安装mysql
  9. SQL CASE 的用法
  10. 搜索引擎算法的139个相关因素【SEO】