博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 204:Count Primes
阅读量:4149 次
发布时间:2019-05-25

本文共 1257 字,大约阅读时间需要 4 分钟。

Description:

Count the number of prime numbers less than a non-negative number, n

分析:

题目要求计算小于N的所有素数的个数。所有主程序很简单:判断是否是素数字,如是,count++ (暂且忽略prim_vec, 后面判断素数时会用到):

int countPrimes(int n) {        int i =0, count=0;	for (i=1; i
判断是否是素数,最简单的代码如下,但这样提交时会超时。

bool isprime(int n)	{		if (n < 2)			return false;		if (n ==2 )			return true;		int tmp = sqrt(n);		for (int i=1; i
对算法进行改进,将判断能否被小于sqrt(n)的数整除,改为能否被小于sqrt(n)的素数整除,可以节省很多计算量,大大减少计算的次数。这样就需要将以前计算的素数都记下来,所以使用一个全局的vector prim_vec 来记录计算过的素数。

对素数的判断代码改进如下:

vector
prim_vec; bool isprime(int n) { if (n < 2) return false; if (n == 2) return true; if(n %2 == 0) return false;  int sq = sqrt(n); int len = prim_vec.size(); for (int index=0; index
sq) break; if (n % tmp == 0) return false; } return true; }

题目完整代码如下:

class Solution {public:    vector
prim_vec; bool isprime(int n) { if (n < 2)
return false; if (n == 2) return true; if(n %2 == 0) return false; int sq = sqrt(n); int len = prim_vec.size(); for (int index=0; index
sq) break; if (n % tmp == 0) return false; } return true; } int countPrimes(int n) { int i =0, count=0; for (i=1; i

转载地址:http://kfxti.baihongyu.com/

你可能感兴趣的文章
Java入门之编程基础(三)
查看>>
Java入门之编程基础(四)
查看>>
Java入门之编程基础(五)
查看>>
Java入门之面对对象
查看>>
Java入门之API的使用及String 和StringBuilder类的常见方法
查看>>
Java入门之对象数组及集合概述
查看>>
Java入门之IO流(输入流和输出流)
查看>>
Java编程案例之学生管理系统
查看>>
Java SE之静态和代码块
查看>>
关于webService的一些理解
查看>>
项目管理工具的使用
查看>>
SpringDataJpa原理及使用
查看>>
懒加载错误的三种处理方案
查看>>
消息队列ActiveMQ的使用
查看>>
定时发短信(quartz框架,阿里大于)
查看>>
常用网址
查看>>
springmvc和mybatis整合(总结)
查看>>
string-boot详解
查看>>
El表达式详解
查看>>
shiro框架
查看>>