LeetCode. 计数质数

题目要求:

统计所有小于非负整数 n 的质数的数量。

示例i:

输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

代码:

class Solution {
public:
    int countPrimes(int n) {
        if (n <= 2) return 0;
        vector<bool> prime(n, true);
        for(int i = 2; i*i < n; i++) {
            if(prime[i]) {
                for(int j = i*i; j < n; j += i) {
                    prime[j] = false;
                }
            }
        }

        int count = 0;
        for(int i = 2; i < n; i++) {
            if(prime[i]) {
                count += 1;
            }
        }
        return count;
    }

};

分析:

用空间换时间的思想,保证不超时

原文地址:https://www.cnblogs.com/leyang2019/p/11681776.html

时间: 2024-08-12 16:08:57

LeetCode. 计数质数的相关文章

【leetcode 简单】 第五十八题 计数质数

统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . class Solution: def countPrimes(self, n): """ :type n: int :rtype: int """ isPrime = [1] * max(2, n) isPrime[0],isPrime[1]=False,False x = 2 while x

[LeetCode] 204. 计数质数

题目链接:https://leetcode-cn.com/problems/count-primes/ 题目描述: 统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 思路: 质数就是除了 1 和本身找不到其他能除尽的数,思路请看题目的提示! 思路一:暴力法(超时)(大家可以学习一下 for ... else 的用法, 一般配合 break 使用) class Solution: def cou

204. 计数质数 | Count Primes

Count the number of prime numbers less than a non-negative number, n. Example: Input: 10 Output: 4 Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7. 统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 .

204计数质数

题目:统计所有小于非负整数 n 的质数的数量. 来源:https://leetcode-cn.com/problems/count-primes/ 法一:自己的超时代码 思路:和官方的方法事实上一样,但是代码没有用标记0 1的方法,导致很费时.删除每个质数的倍数时,都需要判断是否存在,如果是用标记0 1的方法不会出现这种问题,要学会这个切片技巧. import math class Solution: def countPrimes(self, n: int) -> int: if n in [

204.计数质数

感觉挺简单的 结果掉坑了 超时警告 class Solution { public int countPrimes(int n) { int temp = 0; for(int i = 0 ;i < n ;i++){ if(isPrimeNumber(i)){ temp++; } } return temp; } public boolean isPrimeNumber(int n) { if(n == 1||n == 0) return false; if(n==2||n==3) { retu

leetcode实战—素数(埃拉托色尼筛选法包括证明、哈希、RSA)

前言 素数这个概念人类已经研究了上千年,但是的具体的起源却不得而知.早在公元前300年,欧几里得就在他的著作元素中证明了有无穷多个素数,同时也证明了任何一个整数都能够被某一个素数整除.时至今日,素数在计算机科学这样一个和数学联系紧密的学科中也有这个广泛的应用,比如布隆过滤器.伪随机数.RSA加密算法等等,所以掌握素数的特性以及应用能够帮助我们解决不少实际问题. 简介 素数(又称质数)是一个只能被1和它自己整除的整数,换句话说他只有两个因数--1和它自己.比如3是一个素数,因为3只能被1和3整除,

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表

LeetCode 204 Count Primes(质数计数)(*)

翻译 计算小于一个非负整数n的质数的个数. 原文 Count the number of prime numbers less than a non-negative number, n. 分析 这道题以前遇到过,当时是用的最笨的办法,现在也没什么好想法,又恰好题目有提示,我就点开了.题目的提示是一条一条给出来的,我也就逐个的全点开了,感觉好失败-- public int countPrimes(int n) { int count = 0; for (int i = 1; i < n; i++

LeetCode OJ:Count Primes(质数计数)

Count the number of prime numbers less than a non-negative number, n. 计算小于n的质数的个数,当然就要用到大名鼎鼎的筛法了,代码如下,写的有点乱不好意思. 1 class Solution { 2 public: 3 int countPrimes(int n) { 4 vector<int> vtor(n + 1, 0); 5 vector<int> ret; 6 for (int i = 0; i <=