什么是求素数

)i在2到n-1之间任取一个数,如果n能被整除则不是素数,否则就是素数

普通枚举法:

#include <iostream>
#include <string>
#include <cmath>
#include <cstring>
using namespace std; bool isPlain(int x){
if(x<2) return false;
else{
for(int i=2;i<x;i++)
{
if(!(x%i))
return false;
}
}
return true;
} int main()
{
int n;
cin>>n;
int cot=0;
for(int j=0;j<n;j++){
if(isPlain(j)){
cout<<j<<((++cot%7==0)?"\n":"\t");
}
} }

筛选法:

  • 原始版本:
#include <iostream>
#include <string>
#include <cmath>
#include <cstring>
using namespace std; int main()
{
int n;
cin>>n;
bool* ans=new bool[n];
memset(ans,true,sizeof(bool)*n);//
ans[0]=false;
ans[1]=false;
for(int i=2;i<n;i++){
if(ans[i]){
for(int j=i*2;j<n;j+=i){//倍数取整
ans[j]=false;
}
}
}
int col = 0;
for(int i=0;i<n;i++){
if(ans[i]){
cout<<i<<" ";
}
}
return 0;
}
  • 改进版本
#include <iostream>
#include <string>
#include <cmath>
#include <cstring>
#include <bitset>
using namespace std; int main()
{
int n;
cin>>n;
bitset<100000> ans;
ans.set(0);
ans.set(1);
for(int j=2; j<=sqrt(n); j++)
{
for(int i=2*j; i < n; i+=j)
{
ans.set(i);
}
}
int cot=0;
for(int i=0; i<n; i++)
{
if(ans[i]!=1)
{
cout<<i<<((++cot%7==0)?"\n":"\t");
}
} }

例题

question: 给定数字n,求出小于等于n的素数的个数,假设n<=1000000

  • 埃式筛选法(
#include <bits/stdc++.h>

/**
@author:d g w
*/
using namespace std; const int n=1000002;
bool isprime[1000002];
int num[1000002]; int main()
{
fill(isprime,isprime+n,1);
fill(num,num+n,0);
isprime[1]=0;
num[1]=0;
for(int i=2;i<n;i++){ if(isprime[i]){
num[i]=num[i-1]+1;
for(int j=2*i;j<n;j+=i){
isprime[j]=0;
}
}else{
num[i]=num[i-1];
}
}
int n;
while(~scanf("%d",&n)){
cout<<num[n];
}
return 0;
}
  • 欧拉筛选

const int cont = 1000002;;
int Prime[cont];
bool vis[cont];
void prepare()
{
int num = 0;
memset(vis,true,sizeof(vis));
for(int i = 2; i <= cont; ++i)
{
if(vis[i])
Prime[++num] = i;
for(int j = 1; j <= num; ++j)
{
if (i * Prime[j] > cont)
break;
vis[i * Prime[j]] = false;
if (i % Prime[j] == 0) //表明这个数已经被筛过了
break;
}
}
}

C/C++筛选法算素数的更多相关文章

  1. Facebook Hacker Cup 2015 Round 1--Homework(筛选法求素数)

    题意:给定A,B,K(A<=B)三个数,问在[A,B]范围内的数素数因子个数为K的个数. 题解:典型的筛选法求素数.首先建立一个保存素数因子个数的数组factorNum[],以及到n为止含有素数 ...

  2. poj3006 筛选法求素数模板(数论)

    POJ:3006 很显然这是一题有关于素数的题目. 注意数据的范围,爆搜超时无误. 这里要用到筛选法求素数. 筛选法求素数的大概思路是: 如果a这个数是一个质数,则n*a不是质数. 用一个数组实现就是 ...

  3. PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数

    PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...

  4. java筛选法求素数

    这本身没什么,代码一堆 发来纪念下而已 本来刚学习java,编写输出100以内的素数 对于我这个有代码运行性能洁癖的人(但是本身又不懂算法)来说,不能忍 于是看了些资料 参考: http://blog ...

  5. NYOJ--187--快速查找素数(筛选法,素数打表)

    快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数.   输入 给出一个正整数数N ...

  6. ny24 素数距离的问题 筛选法求素数

    素数距离问题时间限制:3000 ms  |  内存限制:65535 KB难度:2 描述    现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度素 ...

  7. ny520 最大素因子 筛选法求素数

    最大素因子时间限制:1000 ms  |  内存限制:65535 KB难度:2 描述 GreyAnts最近正在学习数论中的素数,但是现在他遇到了一个难题:给定一个整数n,要求我们求出n的最大素因子的序 ...

  8. HDU 2136 Largest prime factor(查找素数,筛选法)

    题目梗概:求1000000以内任意数的最大质因数是第几个素数,其中 定义 1为第0个,2为第1个,以此类推. #include<string.h> #include<stdio.h& ...

  9. 筛选法求N以内的所有素数

    素数:一个数只能被1和它本身整除的数.2是最小的素数 #include <iostream> using namespace std; #define NUM 100 ]; int mai ...

随机推荐

  1. angular指令的4种设计模式

    指令的功能集非常丰富,不过我们已经发现了指令的帕累托分布:使用angular编写的大量指令只会用到可用性和设计模式中很小的比例,这些指令大概可以分为4类: 只渲染指令--这些指令将渲染作用域中的数据, ...

  2. hbase-1.2.5完全分布式部署

    详细配置参考http://abloz.com/hbase/book.html#distributed ,2.2.2.2小节 1.修改hbase-site.xml文件.添加如下配置 cluster为ha ...

  3. Numpy数组索引为-1和None

    numpy的数组操作方便,可以用:来切片,用布尔数组或者布尔表达式来查找符合条件的数据,也可以用数组作为另一个数组的索引来查找指定的数据.但有时也会见到数组索引为-1和None.两者的用法如下: 1. ...

  4. hihocoder 1015题

    代码 #include <iostream> #include <string> #include <typeinfo> #include <vector&g ...

  5. Hat's Fibonacci

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

  6. SharePoint Server 2013 安装篇 - 如何解决无法找到 .net 4.5 的问题

    SharePoint Server 2013 在安装前,是不能安装 VS 等会自动安装 .net 4.5.x 以上版本的 .net Framework 的软件的.因为安装了 .net Framewor ...

  7. 详细解读-this-关键字在全局、函数、对象、jQuery等中的基础用法!

    一.前言 1. Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的设计模式来实现面向对象的编程,其 ...

  8. 蓝桥杯-算法训练--ALGO-6 安慰奶牛

    问题描述Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是一个奶牛的家.FJ计划除去P条道路中尽可能多的道路,但 ...

  9. Scrum Meeting Alpha - 1 (团队任务分解)

    团队任务分解 Alpha阶段项目目标 实现一个博客园班级博客的Android 客户端: 实现班级博客的常用功能(不包括投票.公告.校区) 有一个较为简洁美观.操作方便的界面 添加消息提醒功能. 任务拆 ...

  10. [小程序开发] 微信小程序内嵌网页web-view开发教程

    为了便于开发者灵活配置小程序,微信小程序开放了内嵌网页能力.这意味着小程序的内容不再局限于pages和large,我们可以借助内嵌网页丰富小程序的内容.下面附上详细的开发教程(含视频操作以及注意事项) ...