码迷,mamicode.com
首页 > 编程语言 > 详细

查找质数的算法优化版

时间:2016-08-28 19:25:58      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

package com.my.testPrimeNumber;
 
import java.util.ArrayList;
import java.util.List;
 
public class PrimeNumber {
 
    
    public boolean isPrimeNum(int n)
    {
        //第一步过滤偶数,使范围减少一半
        if(n==2)
        {
            return true;
        }
        else if(n%2==0)
        {
            return false;
        }
        //处理奇数,一个素数中不会有偶数因子,但是他的平方根的边界可能是偶数,所以边界单独处理
        //这样写,让局部变量的作用域更小,且只计算一次初始化变量
        for(int i=1,sqrt=(int) Math.sqrt(n),borderNumTest = n%sqrt;i<n; i+=2)
        {
            System.out.println(borderNumTest);
            if(borderNumTest==0)    
            {
                return false;
            }
            else if(i!=1 && n%i==0)
            {
                return false;
            }
        }
        
        return true;
    }
    
    public void findPrimeNum(int x)
    {
        List<Integer> ss = new ArrayList<Integer>(2);
        for(int j = 2; j<x;j++)
        {
            if(isPrimeNum(j))
            {
                ss.add(j);
            }
        }
        System.err.println(ss);
        System.err.println(ss.size());
    }
    
    public static void main(String[] args) {
     new PrimeNumber().findPrimeNum(100);
    }
}
 

查找质数的算法优化版,新东西可能有错大家可以自己看看

查找质数的算法优化版

标签:

原文地址:http://www.cnblogs.com/rocky-AGE-24/p/5815652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!