codeforces 327B(Hungry Sequence) 素数筛法入门(欧拉筛法) Java

数论 - 欧拉函数【 普通求法 + 筛法求欧拉函数 ,java面试大全上 j ++ )break;质数i的欧拉函数即为euler[i] = i - 1 因为1到i−1均与i互质,共i−1个。euler[primes[j] * i]分为两种情况:① i % primes[j] == 0时:primes[j]是i的最小质因子,也是primes[j] * i的最小质因子,因此1 - 1 / primes[j]这一项在euler[i]中计算过了,只需将基数N修正为primes[j]倍,最终结果为euler[i] * primes[j]。 阅读详情

简单的素数筛法–推荐使用欧拉筛法【点蓝色字体查看详情】

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * 题意:输出一个数列,要求递增的并且后面的数不能被它前面的数整除。
 * 
 * 分析:可以输出 n 个递增的质数,使用素数筛法。
 * 
 * 注意:如果有多个解决方案,您可以输出任何一个。即与样例输出不相同也有可能是正确的。
 * 
 * @author TinyDolphin
 *
 */
public class Main {

    private static final int MAX_LENGTH_CHECK = 100000000; // 亿
    private static final int MAX_LENGTH_PRIMELIST = 10000000; // 千万

    private static boolean[] check = new boolean[MAX_LENGTH_CHECK]; // 存储标记
    private static int[] primeList = new int[MAX_LENGTH_PRIMELIST]; // 存储素数

    /**
     * 欧拉筛法:保证每个合数只会被它的最小质因数筛掉,时间复杂度降低到O(n)。 
     * 每一个数都去乘以当前素数表里面已有的数,
     * 当 indexI 是合数,且indexI % primeList[indexJ] == 0 时,只能乘以第一个素数 2
     */
    private static void Euler(int num) {
        int count = 0;
        for (int indexI = 2; indexI <= num; indexI++) {
            if (!check[indexI]) {
                primeList[count++] = indexI;
            }
            // 每一个数都去乘以当前素数表里面已有的数,如果 indexI 是合数,
            // 且 indexI % primeList[indexJ] == 0,那么它只能乘以第一个素数 2
            // 如:2×2、3×(2、3)、4×(2)、5×(2、3、5)、6×(2)、7×(2、3、5、7)、8×(2)、9×(2、3)、10×(2)
            for (int indexJ = 0; indexJ < count; indexJ++) {
                // 过大的时候跳出
                if (indexI * primeList[indexJ] > num) {
                    break;
                }
                check[indexI * primeList[indexJ]] = true;
                // 如果 indexI 是一个合数,而且 indexI % primeList[indexJ] == 0
                // 保证了每个合数只会被它的最小素因子筛掉
                if (indexI % primeList[indexJ] == 0) {
                    break;
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
        int inputN;
        Euler(10000000);
        while (in.hasNext()) {
            inputN = in.nextInt();
            for (int index = 0; index < inputN; index++) {
                out.println(primeList[index]);
            }
        }
        out.flush();
    }
}
Java实现质数筛的三种方法 今天在做一个算法题的时候遇到一个需要求质数的情况,但是本人比较菜只会暴力做法,所以在此记录学习一下质数筛选除了暴力以外的其它做法!注意:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。 阅读详情

相关推荐

反激电源占空比为何必须小于0.5?次谐波振荡与斜坡补偿详解

在开关电源设计中,峰值电流模式控制因其优异的动态响应和逐周期限流保护而被广泛应用。其工作原理是通过采样电感电流的峰值,与误差电压比较来控制开关管的导通与关断。然而,这种控制方式在反激等隔离拓扑中,当占空比超过50%时,会面临一个固有的稳定性挑战——次谐波振荡。这是由于电流扰动会在相邻开关周期内被放大而非衰减,导致系统在开关频率一半处发生振荡,严重影响输出纹波和可靠性。为解决这一问题,工程上引入了斜坡补偿技术,通过向控制信号叠加一个固定斜率的斜坡,改变环路增益条件,从而在宽输入电压或高占空比需求下维持系统稳定

weixin_29631169的博客 627

Codeforces 665F Four Divisors 数论,Min_25筛法

文章目录题意题解 题目链接 题意 求小于等于nnn的正整数中有多少个数刚好有四个约数,其中n≤1011n\leq 10^{11}n≤1011. 题解 显然不能直接筛.经过学习,我们发现min_25min\_25min_25筛法可以在O(n23)O(n^{\frac{2}{3}})O(n32​)的复杂度内完成本题. 首先我们可以意识到成立的数字一定是某个质数的三次方或者两个不同质数的乘积,两者没有重合部分,可分开计算. 质数的三次方很好解决,筛出n\sqrt nn​的质数然后枚举到nnn即可,关键是后者. m

Fuko_Ibuki的博客 1万+

详细Ubuntu 22.04 配置最新UR机械臂仿真环境(ros2-humble, ur-sim, ur-ros2-driver)

使用ubuntu22.04.01和ur-sim, ur-driver进行ur机械臂的仿真

verloge的博客 1万+

三大筛法Java版讲解(暴力筛法、埃氏筛法、欧拉筛法)

三分筛法主要针对于素数的判断,所以应先了解素数的定义质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。比如:2 、3 、5 、7 、11 、13 ······都属于素数因为该40000太小了,不能体现欧拉筛法的效率,当数据足够大时,可以更好的展现欧拉筛法的高效性。比如当计算 2 ~ 10000000 时,暴力算法耗时 2834 ms,而使用欧拉筛法耗时 65 ms。

2201_75496602的博客 490

从JX-2R-01热敏打印机芯到稳定打印:硬件设计与时序控制的实践指南

本文详细解析了JX-2R-01热敏打印机芯的硬件设计与驱动开发全流程。核心内容包括:实现严格的双电源上电时序控制、采用PWM恒流驱动步进电机确保走纸平稳,以及精确控制SPI数据加载与加热脉冲时序以获得清晰打印效果。文章提供了从电路设计、芯片选型到代码调试的实战指南,旨在帮助开发者构建稳定可靠的热敏打印模块。

weixin_29169899的博客 222

2025.06.20【pacbio】|PB甲基化分析结果的统计与可视化介绍

本文介绍了PacBio甲基化数据的统计分析与可视化方法。主要内容包括:1) 分析甲基化位点分布、比例及染色体分布;2) 修饰基序(Motif)的统计与热图展示;3) 全基因组和局部区域测序深度可视化;4) 使用IGV查看单个reads修饰情况。文章提供了R代码示例,涵盖柱状图、分布图、热图等多种可视化形式,并建议了差异甲基化分析等进阶方法,帮助科研人员深入挖掘甲基化数据。

2066

欧拉筛java

java欧拉筛

yusheng_xyb的博客 270

renderdoc的使用

renderdoc可以用来捕获帧渲染情况,排查一些GPU渲染、资源规格等问题。 下面讲述一些该软件连接真机调试使用。 一、下载安装renderdoc 软件的下载地址:https://renderdoc.org/可直接点击下载即可。该软件是开源免费的,不用破解。 下载后直接安装即可使用。 二、打开使用renderdoc 打开界面后,默认的界面布局如下图所示,(这里我已经设置了黑色主题,可以忽略这点),renderdo中主要的窗口有Texture Viewer(纹理查看器)、Event B.

x_xingduo_2315的博客 2万+

素数的线性筛法java,埃氏筛 线性筛(欧拉筛) 算法解析

埃氏晒埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数。他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除。埃氏晒的原理很容易理解,一个合数,必然可以表示成,一个自然数 i 和一个素数的乘积。因此我们找到一个素数后,把他小于n的倍数全部标记为合数,这就是我们要做的。void prime(int n) {bool flag[MAX];//0为素数 ...

weixin_39877898的博客 518

3 路由引入

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。表3-1:各种路由协议的优先级。通过路由引入,可以实现路由信息在不同路由协议间传递。

lwljh134的博客 621

ChatGPT搭配Claude 4写文献综述效果出奇的好!四步法直接写出逻辑清晰、层次分明的文献综述(附复制即用专业提示词)

请梳理【研究领域】中核心理论的发展演进过程,包括每一阶段理论的核心观点、提出背景与推动力,并指出理论演化中的关键节点或范式转变。请根据以下文献摘要内容,帮助我梳理该主题的研究趋势,包括:常见研究视角、研究方法的演变、研究对象的变化方向等。请根据以下研究空白与我已有的研究基础,帮我生成一个清晰的研究定位,包括:研究主题、研究对象、方法路径和理论框架。先要明确这个研究领域中一个主导或热门的理论,比如社会支持理论、认知负荷理论等,强调这个理论内部的不一致性、适用性争议,通过交代这⼀争议的背景,引发读者兴趣。

智能AI让学术科研更容易 569

欧拉筛用法

欧拉筛的基本用法

jeazim的博客 369

lammps蒙特卡洛MC模拟案例

在lammps中,和MC相关的模拟命令有三个:fix gcmc、fix atom/swap、fix sgcmc。在一个lammps模拟中,mc和md可同时存在,间隔运行,所以设置fix sgcmc命令的同时,可以同时设置系综(nve、nvt或者npt)。lammps官网自带案例中也有一个fix sgcmc的案例,主要模拟FeCu合金的MC建模。sgcmc命令可应用到合金的模拟中,如短程有序模拟。MC运行间隔为100步,最终的浓度比例为0.02,也就是2%的Fe原子交换为Cu原子。大家好,我是小马老师。

lammps_jiayou的博客 1825

java---线性筛求欧拉函数之和(每日一道算法2022.9.14)

给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和

SRestia的博客 352

WINCC7.3破解文件

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java描述 LeetCode,572. 另一棵树的子树,欧拉筛选法

LeetCode 力扣 T572. 另一棵树的子树

人在江湖 560

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Java-欧拉筛法】简单素数筛模板

输出筛选出:1229 个素数

学习只为当小狗狗,学习只为当小狗狗,学习只为当小狗狗,学习只为当小狗狗,学习只为当小狗狗,学习只为当小狗狗,学习只为当小狗狗 362

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

素数 素数的定义 寻找素数的方法:试除法、埃氏筛法、(优化)欧拉筛法----Java(代码实现)

素数 素数的定义 寻找素数的方法:试除法、埃氏筛法、(优化)欧拉筛法

King__001的博客 548

AcWing 860.Dyeing to judge Bipartite Graph(Dyeing) Described by Java

Cause of the changing of memory, this problem can be solved. It’s about Bipartite Graph. Problem in AcWing Principle is

SoKeeGan 321

蓝桥杯每日一题----素数筛

素数筛的作用是筛选出[2,N]范围内的所有素数,本次主要讲解两种方法,分别是埃氏筛和欧拉筛。证明时会提到唯一分解定理,如果不知道的小伙伴可以先去学一学,那我们开始啦!

qq_53237241的博客 1335

基础算法系列——欧拉筛(找质数)

文章介绍了如何高效地找出一定范围内的所有质数。介绍了埃拉托斯特尼筛法(埃氏筛),通过标记合数来找到质数,时间复杂度降低到O(nloglogn)。然后提出了欧拉筛法,通过避免重复标记提高效率。最后对算法进行了空间优化,使用位运算减少内存占用。

qq_46121425的博客 1188

CodeForces - 1512G Short Task(欧拉筛求因子和)

题目链接:https://vjudge.net/problem/CodeForces-1512G 题目大意:设 d(n)d(n)d(n) 为 nnn 的约束和,更具体的,d(n)=∑k∣nkd(n)=\sum_{k|n}kd(n)=∑k∣n​k 现在有 mmm 次询问,每次给出一个 ccc ,需要回答满足 d(n)=cd(n)=cd(n)=c 的最小 nnn 题目分析:预处理一下就可以了,屯一个 O(n)O(n)O(n) 求因子和的板子 代码: // Problem: G. Short Task // Co

Falcon的博客 494

Codeforces Round #565 (Div. 3)--D. Recover it!--思维+欧拉筛

D. Recover it! time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output Authors guessed an arrayaaconsisting ofnnintegers; each intege...

lanshan1111的博客 257

codeforces gym101981 Prime Game 欧拉筛+因数分解

https://codeforces.com/gym/101981 题目大意: 思路:考虑位置ppp(下标从111开始)上的一个质因数的对答案的贡献,列出所有的区间,不难发现包含位置ppp的区间有:(n−p+1)∗p(n-p+1)*p(n−p+1)∗p个,现在考虑如何去重,假设该质因数上一次出现的位置是qqq,那么同时包含位置q、pq、pq、p的区间有:(n−p+1)∗q(n-p+1)*q(n−...

xiji333的博客 1196

Java---判断素数的三种方法

求素数的三种方法

2401_84024092的博客 1038

在Java中如何判断素数

本文主要介绍的是素数的判断(使用Java)

gaoqiandr的博客 4377

Codeforces 113C - Double Happiness欧拉筛 + 费马二定理

使用bitset筛,可以承受3e8 + 5 每个合数都被其最小素数因子筛掉,故时间复杂度为O(n) 费马二定理: 所有素数可以表示为4k + 1,4k + 3(2除外),表示为4k + 1的数可以被表示为a^2 + b ^2 #include<bits/stdc++.h> #pragma comment(linker, "/stack:200000000") #pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3

我们仍未知道那天所看见的花的名字。 178
上一篇: 埃拉托斯特尼筛法 VS 欧拉筛法 (素数筛选) Java
下一篇: codeforces 225B(Well-known Numbers) 扩展斐波那契数列 Java
TinyDolphin
博客等级 码龄10年 36粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值