zoukankan      html  css  js  c++  java
  • 204. Count Primes

    原文题目:

    204. Count Primes

    读题:

    题目很简单,就是求小于n的质数的个数,注意是小于n,不等于n,也就是说n=2的时候,返回0,n=3时才是返回1

    一下列出两种方法,一种方法超时,另一种方法逐步优化到46ms

    //超时
    class Solution 
    {
    public:
    	int countPrimes(int n) 
    	{
    		int count = 0;
    		int i = 0;
    		if (n < 2)
    		{
    			return count;
    		}
    		for(i = 2;i<n;i++)
    		{
    			if(isPrime(i))
    			{
    				count++;
    			}
    		}
    		return count;
    
    	}
    	int isPrime(int m)
    	{
    		int i = 0;
    		if(m <2)
    		{
    			return 0;
    		}
    		for(i = 2;i <= m/2;i++)
    		{
    			if(m %i == 0)
    			{
    				return 0;
    			}
    		}
    		return 1;
    	}
    };
    //129ms
    class Solution 
    {
    public:
    	int countPrimes(int n) 
    	{
    		int count = 0;
    		int i = 0;
    		vector<bool> isprime;
    		for (int i = 0; i < n; i++)
    			isprime.push_back(true);
    
    		for (int i = 2; i < n; i++)
    		{
    			for (int j = i + i; j < n; j += i)
    			{
    				isprime[j] = false;
    			}
    		}
    
    		for (int i = 2; i < n; i++)
    		{
    			if (i != 0 && i != 1 && isprime[i])
    				count++;
    		}
    
    		return count;
    	}
    };
    
    //73ms
    class Solution 
    {
    public:
    	int countPrimes(int n) 
    	{
    		int count = 0;
    		int i = 0;
    		if(n <3)
    		{
    			return 0;
    		}
    		if(n == 3)
    		{
    			return 1;
    		}
    		if(n == 4)
    		{
    			return 2;
    		}
    		vector<bool> isprime;
    		for (int i = 0; i < n; i++)
    			isprime.push_back(true);
    
    		for (int i = 2; i*i < n; i++)
    		{
    			for (int j = i + i; j < n; j += i)
    			{
    				isprime[j] = false;
    			}
    		}
    
    		for (int i = 2; i < n; i++)
    		{
    			if (isprime[i])
    				count++;
    		}
    
    		return count;
    	}
    };
    
    //46ms
    class Solution 
    {
    public:
    	int countPrimes(int n) 
    	{
    		int count = 0;
    		int i = 0;
    		if(n <3)
    		{
    			return 0;
    		}
    		if(n == 3)
    		{
    			return 1;
    		}
    		if(n == 4)
    		{
    			return 2;
    		}
    		vector<bool> isprime;
    		for (int i = 0; i < n; i++)
    			isprime.push_back(true);
    
    		for (int i = 2; i*i < n; i++)
    		{
    			if(isprime[i])
    			{
    				for (int j = i + i; j < n; j += i)
    				{
    					isprime[j] = false;
    				}
    			}
    			
    		}
    
    		for (int i = 2; i < n; i++)
    		{
    			if (isprime[i])
    				count++;
    		}
    
    		return count;
    	}
    };
    

      

  • 相关阅读:
    SVN同步版本库与网站目录2
    SVN同步版本库与网站目录
    vsftpd配置手册(实用)
    Yii中的CComponent应用实例
    js中文乱码
    yii CComponent组件 实例说明1
    try...cath...finally中的return什么时候执行
    Jmeter之Constant Timer与constant throughput timer的区别
    cookie、session、sessionid ,jsessionid 的区别
    性能测试基本概念
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8006790.html
Copyright © 2011-2022 走看看