`
lg_asus
  • 浏览: 190762 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

判断素数

 
阅读更多
public class Prime {
	private static int MAX = 10000000;
	private int[] isPrime = new int[MAX];
	
	private void prime(){
		for(int i=0;i<MAX;i++){
			if(i==0 || i==1){
				isPrime[i] = 0;
			}else{
				isPrime[i] = 1;
			}
		}
		
		for(int i=2;i*i<MAX;i++){
			if(isPrime[i]==1){
				for(int j=i;j*i<MAX;j++){
					isPrime[j*i] = 0;
				}
			}
		}
	}
	
	public static void main(String...args){
		Prime p = new Prime();
		p.prime();
		long start = System.currentTimeMillis();
		/*for(int i=0;i<p.isPrime.length;i++){
			if(p.isPrime[i]==1){
				System.out.println(i+"是质数");
			}
		}*/
		long end = System.currentTimeMillis();
		System.out.println(end-start);
	}
}
分享到:
评论
2 楼 lg_asus 2012-05-16  
上面代码有点小问题,最新代码:
public class Prime {
	private static int MAX = 1000000;
	private int[] isPrime = new int[MAX];
	
	private void prime(){
		for(int i=0;i<MAX;i++){
			if(i==0 || i==1){
				isPrime[i] = 0;
			}else{
				isPrime[i] = 1;
			}
		}
		
		for(int i=2;i*i<MAX;i++){
			if(isPrime[i]==1){
				for(int j=i;j*i<MAX;j++){
					isPrime[j*i] = 0;
				}
			}
		}
	}
	
	public static void main(String...args){
		long start = System.currentTimeMillis();
		Prime p = new Prime();
		p.prime();
		int j = 0;
		for(int i=0;i<p.isPrime.length;i++){
			if(p.isPrime[i]==1){
				j++;
				/*System.out.print(i+"\t");
				if(j%5==0){
					System.out.println();
				}*/
			}
		}
		System.out.println("\ntotal prime numbers: "+j);
		long end = System.currentTimeMillis();
		System.out.println("time consumed: "+(end-start));
	}
}


1 楼 lg_asus 2012-05-16  
测试10 million的以内的数据,算出所有素数时间在500多ms,不包括把数据打印出来的时间。

这个思想就是筛选法,首先把2的倍数去掉,再去3的倍数,依此类推。

其中耗时的工作在:
for(int i=2;i*i<MAX;i++){ 
            if(isPrime[i]==1){ 
                for(int j=i;j*i<MAX;j++){ 
                    isPrime[j*i] = 0; 
                } 
            } 
        } 

其中第一层循环中,i只需要循环到MAX的平方根就行,下面的if不能省,否则会重复判断。内层的for循环,j要从i开始,否则也会做重复工作,同时要保证i*j<MAX。

相关推荐

    判断素数(Vector)_判断素数_

    在描述中提到的"判断素数(Vector)"可能意味着这个程序会用到C++的STL库中的`std::vector`容器,这是一种动态数组,可以方便地存储和操作一系列元素。 ```cpp #include #include // 判断是否为素数的函数 bool ...

    判断素数labview程序

    多种方法判断素数

    C#判断素数的一个实例

    首先,我们要了解判断素数的基本算法。一种常见的方法是试除法。对于输入的数字n,我们可以从2开始,逐个检查到sqrt(n)(n的平方根),看n是否能被这些数字整除。如果都不能整除,那么n就是素数。这是因为如果n有...

    c#版判断素数

    总的来说,C#版判断素数涉及到的知识点包括:基础的C#语法、控制流程、整数转换、输入输出、数学逻辑以及可选的图形用户界面交互。这些知识是学习C#编程的基础,对于理解和实现类似功能至关重要。通过这个简单的示例...

    C语言程序设计-程序举例判断素数.pptx

    C语言程序设计-判断素数 C语言程序设计中,判断素数是一个常见的编程任务。所谓素数,是指只能被1和它本身整除的自然数。例如,2、3、5、7等都是素数,而4、6、8等不是素数。 在C语言程序设计中,判断素数可以使用...

    判断素数,只能被1或本身整除的数称为素数 基本思想

    在计算机科学领域,判断素数是一项基础且重要的任务。素数是正整数中除了1和它自身外,无法被其他正整数整除的数。例如,2、3、5、7、11等都是素数。素数在密码学、数论以及算法设计等方面都有广泛应用。 判断一个...

    判断素数(sqrt).cpp

    判断素数(sqrt).cpp

    判断素数.cpp

    判断素数.cpp

    米勒测试判断素数 网上找的

    用米勒测试判断素数 为神马描述要多于20个字符呢 真的没什么可描述的啊

    c语言判断素数

    ### C语言判断素数知识点详解 #### 一、素数定义 素数(Prime Number),又称质数,指的是只能被1和自身整除的大于1的自然数。例如,2、3、5、7等都是素数。了解素数的概念对于编写判断素数的程序至关重要。 #### ...

    java中用于判断素数的程序

    java中用于判断素数的程序。大家可以看看。

    如何判断素数

    本文将深入讲解如何判断素数,并通过算法结构来理解这一过程。 首先,我们要明确一个基本的判断素数的方法——试除法。对于给定的正整数n,我们从2开始尝试将其除尽,如果能被2到√n之间的任何数整除,那么n就不是...

    判断素数.exe,这是个人的学习资料,提供小程序使用。

    算法练习_判断素数.这是个人的学习资料,提供小程序使用。这只是作为保存版本,不做为其他用途。此处省略50字。

    C++1023 - 判断素数

    任意输入一个整数,判断它是否为素数。是的话输出 T ,不是的话输出 F。质数(�����prime ������number)又称素数,质数定义为在大于 11 的自然数中,除了 11 和它本身以外不再有其他因数。

    基础算法-python判断素数

    python判断素数 def is_prime(n): # 判断素数的函数 """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False""" if n return False # 0、1、负数以及偶数都不是素数 for i in range(2, ...

    3_判断素数_yes_

    标题 "3_判断素数_yes_" 暗示我们要探讨的是如何在编程中判断一个正整数是否为素数的问题。素数是大于1且只有两个正因数(1和自身)的自然数,比如2、3、5、7、11等。描述中的任务明确指出,我们需要编写一个程序,...

    判断素数_yes_素数的判断_

    题目给出的【标题】"判断素数_yes_素数的判断_" 和【描述】"输入一个正整数m,判断其是否为素数,是的话输出YES,否则为NO" 是一个常见的编程任务,通常用于初学者练习或编程竞赛中的算法问题。这个任务的核心就是...

    Python判断素数,内有代码及判断素数教程.txt

    python判断素数编程题,内有代码及判断素数教程

    判断素数的三种方法.pdf

    【标题】: 判断素数的三种方法 【描述】: 判断一个数是否为素数,即在大于1的自然数中,除了1和它自身外,不能被其他自然数整除的数。 【标签】: 数据结构 【部分内容】: 素数在数学领域扮演着重要的角色,如RSA...

    判断素数c语言.rar

    以下是一个用C语言编写的判断素数程序的详细解析: 理解素数定义 首先,我们需要明确素数的定义。一个大于1的正整数,如果除了1和它本身以外不再有其他因数,那么这个数就是素数。根据这个定义,我们可以知道1不是...

Global site tag (gtag.js) - Google Analytics