首页 > 其他分享 >质数筛法

质数筛法

时间:2022-10-08 21:57:39浏览次数:33  
标签:prime 埃式 筛法 int 质数 ret

埃式筛
原理:如果 x是质数,那么x的倍数 2x,3x… nx一定不是质数
输入一个数n,就可以知道1-n中有多少个质数:

        int n;
	int ret = 0;
 	cin>>n;
 	int* prime = new int[n];
 	memset(prime, 1, sizeof(prime));
	prime[1] = 0;
 	for (int i = 2; i <= n; ++i)
{
 		if (prime[i])
 		{
 			ret++;
 			for (int j = i; j * i <= n; ++j)
				prime[i * j] = 0;
		}
	}
	cout << ret;
       delete[]prime;

如果需要把质数打印出来,需要改动一点点,如下:

去掉:ret++;int ret=0;

改成:cout<<i<<" ";

标签:prime,埃式,筛法,int,质数,ret
From: https://www.cnblogs.com/FJCLJ/p/16770366.html

相关文章

  • 204. 计数质数
    204.计数质数给定整数n,返回所有小于非负整数 n 的质数的数量。 示例1:输入:n=10输出:4解释:小于10的质数一共有4个,它们是2,3,5,7。示例2:输......
  • 【模板】筛法
    \(prime\)constintN=1e7+10;intprime[N];boolnotprime[N];intminprime[N];voidprime_sieve(constintmaxn){ registerinti,multi_helper; registerin......
  • 质数-暴力优化然后通过
    暴力方法#include<cstdio>#include<iostream>#include<cmath>usingnamespacestd;intmain(){intb;inta;cin>>a;///暴力方法证明......
  • AcWing 算法提高课 筛质数
    例题:1、求区间中的质数筛质数是O(n)或O(nloglogn)但是如果n很大,则会超时。 但是如果要筛[l,r]区间中的全部质数且l和r比较大,但是r-l比较小时。可以用O(nloglogn)......
  • 埃拉托斯特尼筛法——求1-n内质数个数的最快算法
    埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数......
  • 埃拉托斯特尼筛法(埃式筛,筛选数字n范围内的素数)
     古希腊数学家 埃拉托色尼/埃拉托斯特尼(Eratosthenes)除了在2000多年前就发现地球不是平的之外,还发明了本文中讨论的埃式筛(一种通过筛除一个素数所有的倍数,从而识别素数......
  • (程序基本结构)质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。输
    样例输入4 样例输出23 样例输入10 样例输出2357 解题代码n=int(input())foriinrange(2,n):a=i+1t=1forainrange(2,i):......
  • 517 筛法求约数和
    视频链接: #include<iostream>usingnamespacestd;constintN=1000010;intp[N],vis[N],cnt;//g[i]表示i的最小质因子的1+p^1+...+p^kintg[N],f[N];//f[......
  • 516 筛法求约数个数
    视频链接:#include<iostream>usingnamespacestd;constintN=1000010;intp[N],vis[N],cnt;inta[N];//a[i]记录i的最小质因子的次数intd[N];//d[i]记录i......
  • 质数,质数因子
    质数:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数不能被其它自然数整除:被其它数取余不等于0例:输入一个正整数,按照从小到大的顺序输......