首页 > 编程语言 >埃拉托斯特尼筛法——求1-n内质数个数的最快算法

埃拉托斯特尼筛法——求1-n内质数个数的最快算法

时间:2022-09-25 20:47:39浏览次数:45  
标签:斯特尼 筛法 int 质数 素数 埃拉托

埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。

要得到自然数n以内的全部素数,必须把不大于 根号n 的所有素数的倍数剔除,剩下的就是素数。
给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。 代码实现:
#include <stdio.h>
#include <math.h>
bool is_prime[1000];
int main(){
    int n;
    scanf("%d", &n);
    for(int i = 0; i <= n; i++){
        is_prime[i] = true;                    //初始化所有的数为素数
    }
    for(int i = 2; i <= sqrt(n); i++){         //从第一个素数2开始筛选
        if(is_prime[i]){                       //如果是素数
            for(int j = i*i; j <= n; j += i){  //则剔除掉它的倍数
                is_prime[j] = false;
            }
        }
    }
    for(int i = 2; i <= n; i++){
         if(is_prime[i]){
             printf("%d\n", i);
         }
    }
    return 0;
}

 

标签:斯特尼,筛法,int,质数,素数,埃拉托
From: https://www.cnblogs.com/yhstsy/p/16728797.html

相关文章

  • 埃拉托斯特尼筛法(埃式筛,筛选数字n范围内的素数)
     古希腊数学家 埃拉托色尼/埃拉托斯特尼(Eratosthenes)除了在2000多年前就发现地球不是平的之外,还发明了本文中讨论的埃式筛(一种通过筛除一个素数所有的倍数,从而识别素数......
  • (程序基本结构)质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。输
    样例输入4 样例输出23 样例输入10 样例输出2357 解题代码n=int(input())foriinrange(2,n):a=i+1t=1forainrange(2,i):......
  • 质数,质数因子
    质数:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数不能被其它自然数整除:被其它数取余不等于0例:输入一个正整数,按照从小到大的顺序输......
  • C#: 三元表达式、质数的判别、随机数的创建、枚举的应用
    三元表达是的运用:代码:Console.WriteLine("请输入第一个数字");intnumber1=Convert.ToInt32(Console.ReadLine());Console.WriteLine("......
  • 204. 计数质数
     labuladong题解思路难度中等937收藏分享切换为英文接收动态反馈给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例1:输入:n=10输出:4解释:......
  • 1454. 异或和是质数的子集数 01背包
    题意给出n个互不相同的正整数。问存在多少个子集,使得子集中所有数的异或和是质数。由于答案可能很大,请你输出对109+7取模后的结果。分析题意就是指:从一堆元素中......
  • 质数筛
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;intn,primes[N];intget_prime(intu){intcnt=0;memset(primes,true,sizeof......
  • java质数算法
    importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.stream.Collectors;importjava.stream.Stream;publicclassMain{publ......
  • 质数判定的常数优化
    注意:下面可能有部分数学符号使用不规范,看懂就行。如何迅速判断\(n\)是否为质数?方法一枚举\(i\)满足\(1<i<n\),则\(n\)不是质数,当且仅当全部的\(i\nmidn\)......
  • leetcode1175-质数排列
    质数排列分别找出质数和合数的数量,将两者的阶乘相乘即可classSolution{publicintnumPrimeArrangements(intn){intcnt=0;for(inti=2;......