首页 > 其他分享 >筛质数

筛质数

时间:2023-04-29 22:56:13浏览次数:34  
标签:std prime cnt int 质数 init

筛质数:

朴素筛法代码实现:

#include<iostream>
using namespace std;
const int N=1e5+5;
int prime[N],vis[N],cnt;
void init(int n){
	for(int i=2;i<=n;i++){
		if(!vis[i])prime[cnt++]=i;
		for(int j=i+i;j<=n;j+=i)vis[j]=1;
	}
}
int main(){
	int n;
	cin>>n;
	init(n);
	for(int i=0;i<cnt;i++)cout<<prime[i]<<endl;
	return 0;
}

埃氏筛法代码实现:

#include<iostream>
using namespace std;
const int N=1e5+5;
int prime[N],vis[N],cnt;
void init(int n){
	for(int i=2;i<=n;i++){
		if(!vis[i]){
			prime[cnt++]=i;
			for(int j=i+i;j<=n;j+=i)vis[j]=1;
		}
	}
}
int main(){
	int n;
	cin>>n;
	init(n);
	for(int i=0;i<cnt;i++)cout<<prime[i]<<endl;
	return 0;
}

线性筛法代码实现:

#include<iostream>
using namespace std;
const int N=1e5+5;
int prime[N],vis[N],cnt;
void init(int n){
	for(int i=2;i<=n;i++){
		if(!vis[i])prime[cnt++]=i;
		for(int j=0;prime[j]*i<=n;j++){
			vis[prime[j]*i]=1;
			if(i%prime[j]==0)break;
		}
	}
}
int main(){
	int n;
	cin>>n;
	init(n);
	for(int i=0;i<cnt;i++)cout<<prime[i]<<endl;
	return 0;
}

 

标签:std,prime,cnt,int,质数,init
From: https://www.cnblogs.com/hxss/p/17364599.html

相关文章

  • 编译期生成随机质数
    Q1:为什么要随机质数A1:因为不随机可能会被hackQ2:为什么要编译期生成A2:编译期生成的话,编译器可以上取模常数优化Q3:你咋搞的A3:__TIME____TIMESTAMP__这两个宏。具体来说,每次编译后,生成的质数相同。重新编译后,生成的质数不同。#include<bits/stdc++.h>usingst......
  • 质数及其筛法
    筛法质数质数,又称素数。如果一个数\(a\in\N^+(a\neq1)\)的因子有且仅有\(1\)和它本身,则称数\(a\)为质数。普通筛法过程枚举\([2,n-1]\),如果\(n\)在这个范围内有因子,则\(n\)不是因数。因为\(n\)的因子成对出现,所以我们可以枚举\([2,\sqrt{n}]\)。Codeboolisprime(in......
  • 101到200的质数
    质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。我们设定一个数为x,根据质数的定义判断x是否为质数,我们看它能否被2、3、4······、x-1整除,如果它不能被其中任何一个整数整除,则这个数就是质数。思路就是先判断一个数是不是质数,再去拓展......
  • 输出100-200之间所有的质数
    输出100-200之间所有的质数<script>lettotal=0;//计数器for(leti=100;i<200;i++){letnum=true;for(letq=2;q<i;q++){if(i%q==0)/*余数为零,能被整除*/{n......
  • C语言:求正整数的所有质数因子(如:180:2 2 3 3 5)
    #include<stdio.h>#求正整数的所有质数因子(如:180:22335)main(){intm,i;scanf("%d",&m);for(i=2;i<=m;i++){if(m%i==0){printf("%3d",i);m=m/i;......
  • 用穷举法找出1~100的质数并显示出来
    一、问题描述。用穷举法找出1~100的质数。二、设计思路。 1.判断1~100之内的的质数,只需要判断1~根号100内是否还有整数可除即可 2.利用sqrt求出“i”的平方根,从2开始与比它小或者等于的“j”依次进行判断,如果存在与j求余为0的情况则令flag=0;结束循环。“i”+1,进行下一次的......
  • LeetCode 周赛 340,质数 / 前缀和 / 极大化最小值 / 最短路 / 平衡二叉树
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,我是小彭。上周跟大家讲到小彭文章风格的问题,和一些朋友聊过以后,至少在算法题解方面确定了小彭的风格。虽然竞赛算法题的文章受众非常小,但却有很多像我一样的初学者,他们有兴趣参加但容易被题目难......
  • 你的订婚|结婚纪念日是质数吗?进来测算看看……
    今年开年以来,随着ChatGPT的爆火,原本一直平静的三六零安全科技股份有限公司(下称360)股价仅2月以来涨幅就达到近200%。然而4月4日晚间,360发布公告称,公司董事长周鸿祎与妻子胡欢离婚。有意思的是,2020年5月20日,周鸿祎在其抖音账号发布的“结婚纪念日”视频里表示,挑选结婚纪念日要用质数,......
  • 6361.对角线上的质数-340
    对角线上的质数给你一个下标从0开始的二维整数数组nums。返回位于nums至少一条对角线上的最大质数。如果任一对角线上均不存在质数,返回0。注意:如果某个整数大于1,且不存在除1和自身之外的正整数因子,则认为该整数是一个质数。如果存在整数i,使得 nums[i][i]......
  • 质数和分解
    #include<iostream>#include<string.h>usingnamespacestd;constintN=210;intm;intf[N][N];intprimes[N];intcnt=1;boolst[N];voidinit(){for(inti=2;i<=200;i++){if(!st[i])primes[cnt++]=i;for(intj=1;......