LeetCode Count Primes

LeetCode 204. Count Primes 及判断一个数是否是质数的方法 LeetCode 204. Count Primes 题意:给出一个非负整数n,求小于n的质数的个数。 阅读详情

原题链接在这里:https://leetcode.com/problems/count-primes/

这道题我先用了 HashSet,从2开始判断他是否为prime,若是就加入HashSet,对于接下来的数n,判断它是否会被HashSet现有的数字整除,若不能,n也是prime,加入HashSet;若能,n就不是prime。时间复杂度为O(n+k^2),k为指数。但是这种方法也超时了。


网上查查,原来有一种方法叫:Sieve of Eratosthenes 的方法。时间复杂度为O(nloglogn),空间复杂度为O(n).


Note: 1. 题目说的是less than n, 所以 n 不算, 例如输入为2,返回值应该是0 而不是 1.

  2. 新建的 boolean array 长度是 n+1,因为要算上0, 但这道题目球的是 less than n, 所以建长度为n的也ok。不过要记得在array名字后面加[].

  3. 为什么i要循环到Math.sqrt(n), 因为要保证下面的 j 不overflow 数组,以 5 为例,5*2,5*3,都被之前检查2,检查3时检查过了,所以直接检查5*5 即可,对于每一个i,都是直接开始检查i*i即可,所以外层的i要满足 i < Math.sqrt(n).

  4. j = 2i, 4i, 6i, 循环时要这么写:for(int j = i+i;j<n;j = j+i).


public class Solution {
    public int countPrimes(int n) {
        /*Method 1
        if(n<=1) 
            return 0;
            
        HashSet<Integer> hs = new HashSet<>();
        int counter = 0;
        
        for(int i = 2; i<n;i++){
            if(isPrime(i,hs)){
                hs.add(i);
                counter++;
            }
        }
        
    return counter;    
    }
    
    private boolean isPrime(int n, HashSet hs){
        if(n>1 && (hs == null || hs.size() == 0))
            return true;
        
        Iterator it = hs.iterator();
        while(it.hasNext()){
            int k = (int)it.next();
            if(n%k == 0){
                return false;
            }
        }
        
        return true;
    }
    */
    
        //Method 2 Sieve of Eratosthenes
        if(n<=2) 
            return 0;
    
        boolean isPrime[] = new boolean[n+1];
        for(int i = 2;i<n;i++){
            isPrime[i] = true;
        }
    
        for(int i = 2; i<Math.sqrt(n);i++){
            if(isPrime[i]){
                for(int j = i+i;j<n;j=j+i){
                    isPrime[j] = false;
                }
            }
        }
        
        int count = 0;
        for(int i = 2;i<n;i++){
            if(isPrime[i]){
                count++;
            }
        }
        
        return count;
    
    }
}
        



光学系统设计:波段、光源、光纤与探测器匹配指南 在光学测量和光纤通信系统中,波段、光源、光纤和探测器的匹配关系是系统设计的核心基础。波段指电磁波谱中的特定波长范围,光源负责产生特定波长的光信号,光纤作为传输介质需要与波长匹配以降低损耗,探测器则负责将光信号转换为电信号。理解各组件的光谱特性对于系统性能至关重要,例如在850nm短波长多模光纤系统中,VCSEL激光器与PIN光电二极管的组合能提供最佳性价比。典型应用场景包括生物医学成像、光纤通信和气体传感,其中光谱重叠优化、模场直径匹配和偏振特性协调是关键技术要点。通过实测数据对比不同组合的传输性能,可以为 阅读详情

相关推荐

代码详解——Transformer

对于一个序列,在 time_step 为 t 的时刻,我们的解码输出应该只能依赖于 t 时刻之前的输出,而不能依赖 t 之后的输出。当 Decoder 的输入矩阵和 Mask 矩阵输入矩阵包含 “ I have a cat” (0, 1, 2, 3, 4) 五个单词的表示向量,Mask 是一个 5×5 的矩阵。然后判断是否传入的mask, 如果有mask (mask参数值不为None),则把mask为0的位置,将对应位置的attn的值设为无穷小的负数。可以发现得到的输出和输入的K,Q,V的大小相同。

zyw2002的博客 7208

数组运算(2021.10.31)

#include<stdio.h> int main(void) { int letter,blank,digit,other,n; char ch; digit = letter = other = blank =0; scanf("%d",&n); getchar(); int i; for(i = 1;i<=n;i++){ ch = getchar(); if((ch>='a'&&ch<='z')||(ch>.

studingbear的博客 395

蓝牙6.0的‘新雷达’:Channel Sounding信道探测,真能比UWB更香吗?

本文探讨了蓝牙6.0的Channel Sounding信道探测技术在室内定位领域的应用潜力。通过与UWB技术的对比分析,揭示了其在成本、功耗和兼容性方面的优势,特别是在智能门锁、物品追踪等场景中的商业价值。Channel Sounding技术不仅具备亚米级精度,还能通过现有蓝牙设备实现零边际成本部署,为物联网应用提供了新的解决方案。

weixin_29288313的博客 332

2021/12/03

&&且操作 &&且操作 sqrt(x) //x的平方根 判断素数能否被已知的且小于x的素数整除 int main(void) { const int number = 100; // 需要求100个素数 int prime[number] = {2}; // 定义数组,初始素数为2 int count = 1; //里面已经有一个素数了 int i = 3; //从3开始来测试这个数是不是素数 while ( coun...

m0_59458126的博客 1148

KT148A语音芯片SOP外挂功放芯片8002D的说明_V1

KT148A语音芯片内置8欧姆0.5W的功放,所以一般的应用场景,播放一些提示音音量是足够的。但是有的需求还需要驱动更大的扬声器,实现更大的播放音量,这里我们给出解决方案。KT148A+HAA8002D的组合

qyvhome的博客 2147

无人机芯片模块技术要点分析

恶劣环境下信号稳定性:无人机在恶劣环境下工作时,遥感系统采集的信号往往很不稳定,视频信号处理芯片需要具备强抗干扰能力,能辨别脉冲脉宽为50ns以上、幅度为0V~4.5V的输入信号。这种架构能兼顾强大的运算能力和灵活的接口控制。芯片小型化:麻省理工学院的研究人员已设计出仅20平方毫米的微型芯片,可处理无人机飞行所需的惯性数据和相机图像,为微型无人机的发展奠定了基础。光子集成芯片(PIC) :研究显示,与电子芯片相比,光子计算芯片在延迟、计算容量和能效上都有数量级的提升,有望解决当前无人机系统的计算瓶颈。

YUNZHUO666的博客 1404

判断素数的多种方法

浙大c语言设计第八章8.2第二个视频 方法一:从2到x-1测试是否可以整除 int isPrime(int x) { int ret = 1; int i; if(x == 1) ret = 0;//处理 1不是素数 的问题 for(i=2; i<x; i++) { if(x%i == 0){ ret = 0; break; } } ret...

ilovejujube的博客 1566

Win11专业版破解RDP限制:实现多用户远程桌面协同办公

本文详细介绍了如何在Windows 11专业版上破解RDP限制,实现多用户远程桌面协同办公。通过使用RDPWrap工具,用户可以绕过微软的授权限制,允许多个用户同时登录同一台电脑,提高硬件利用率和团队协作效率。文章包含详细的安装配置步骤、性能优化技巧及常见问题解决方案,适用于需要远程协作的办公场景。

weixin_33806300的博客 466

MOOC|素数求解的不同思路

看视频学习的素数内容,不是很难,最后两种情况很考验人

Brittney27的博客 249

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 645

【Claude】Auto Mode 触发安全分类器拦截的三种错误变体及对应处理 bug报错已解决

深度解析Claude Auto Mode安全分类器拦截的三种变体:内容拒绝、操作中断、累积触发,含完整排查流程与绕过策略。

博客 7580

[leetcode] 204. Count Primes

Description 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. 分析 题目的意思是:给你一个...

Learning from the mistakes 222

YOLOv11【第三章:高阶应用与落地篇·第7节】多任务联合训练(Multi-Task Learning):检测+分割+关键点三头并进!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 726

LeetCode - 204. Count Primes

题目 LeetCode - 204. Count Primes 题目链接 https://leetcode.com/problems/count-primes/ 参考博客 https://www.cnblogs.com/grandyang/p/4462810.html 解题思路 自行设计的算法时间复杂度是n∗n\sqrt{n} * nn​∗n,但是运行超时,参考博客的算法复杂度分析知时间复杂度相同...

virgilshi的博客 215

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[LeetCode]204. Count Primes

[LeetCode]204. Count Primes题目描述思路类似动态规划,每次计算当前素数时,将不可能是素数的结果标记,之后遍历碰到这些结果直接跳过代码#include <iostream> #include <vector>using namespace std;class Solution { public: int countPrimes(int n) { if

Lcharon的博客 372

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Leetcode 204.Count Primes

Leetcode 204. Count Primes Count the number of prime numbers less than a non-negative number, n. 知识:任意一个合数都可以进行质因数分解,即任意一个合数都是一个小于自己的素数的倍数。 一、试除法 进行打表,一个数n如果是比它小的任意一个素数的倍数,则它是合数。 复杂度O(...

yangchz的博客 394

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[Leetcode] Count Primes

Description: Count the number of prime numbers less than a non-negative number, n Hint: The number n could be in the order of 100,000 to 5,000,000. click to show more hints. Credits:Special thanks...

weixin_34257076的博客 220

Count Primes LeetCode

count primes leetcode

Bamboo的博客 331

[LeetCode] 204. Count Primes

题:https://leetcode.com/problems/count-primes/description/ 题目 Count the number of prime numbers less than a non-negative number, n. Example: Input: 10 Output: 4 Explanation: There are 4 prime numbers l...

u013383813的博客 108

[LeetCode] Count Primes

Description: Count the number of prime numbers less than a non-negative number, n解题思路采用Eratosthenes筛选法,依次分别去掉2的倍数,3的倍数,5的倍数,……,最后剩下的即为素数。实现代码class Solution { public: int countPrimes(int n) {

楚兴 1913

leetcode——Count Primes

题目 Description: Count the number of prime numbers less than a non-negative number, n. 方法 对于这道题,最简单最直观的方法往往是:对n以下的每一个数字进行判断从而求出个数。而在对每个数字(比如x)判断的时候,又是暴力验证的思想,即从2开始一直到sqrt(x)进行相除判断是否整除。更有甚者直接从2到x/2或

Ghost In Matrix 646

leetcode刷题记录-204. Count Primes

leetcode刷题记录-204. Count Primes

zhaizhan501的博客 218

面试题素数问题 && Leetcode 204. Count Primes

找到一篇简单粗暴的介绍面试质素算法的文章。 然后就涉及到如何按位保存。 在C++里,要按照bit来存储可以使用容器bitset。但是需要预先指定长度,例如bitset bar。 要动态分配长度,可以使用vector,它会优化,长度可能为1bit。但是实际操作中发现不好用,不能与bool类型的值判等,也不能赋值(可能是我没搞懂,但在微软对该类的介绍页面也没看到相关用法,只有用cout输

GTMer的专栏 271

leetcode笔记:Count Primes

题目有很多tips,大意是算出2~n之间有多少个素数。 思路来自著名的埃拉托斯特尼筛法。

liyuefeilong的专栏 1683

leetcode之Count Primes

题目: Description: Count the number of prime numbers less than a non-negative number, n. 解答: 此题利用的是类似于排除法,具体做法题目中的hint讲的很清楚 class Solution { public: int countPrimes(int n) { i

luckyu1的博客 362
上一篇: Java: Class Variable/Static Variable
下一篇: LeetCode Valid Anagram
Dylan_Java_NYC
博客等级 码龄11年 1粉丝 134原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值