#include <iostream>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn=10005;
bool vis[maxn];
int prime[maxn];
void make_prime()//一般线性筛,会出现重复筛,每一次筛掉的是素数的倍数
{
memset(vis,true,sizeof(vis));
vis[0]=vis[1]=false;
int tot=0;
for(int i=2;i<maxn;i++)
{
if(vis[i])//表明i是素数
{
prime[++tot]=i;
for(int j=i*i;j<maxn;j+=i)//将能够整除这个数的筛掉
vis[j]=false;
}
}
}
void Euler_prime()//快速线性筛法,每一次筛掉的是i*(小于它最小素因子)的合数
{
memset(vis,true,sizeof(vis));
int tot=0;
for(int i=2;i<maxn;i++)
{
if(vis[i]) prime[tot++]=i;
for(int j=0;j<tot&&prime[j]*i<maxn;j++)//不管是不是素数都会进行这一步
{
vis[i*prime[j]]=false;
if(i%prime[j]==0) break;//关键
}
}
}
int main()
{
return 0;
}
素数筛两种方法
时间: 2024-10-05 07:04:00
素数筛两种方法的相关文章
C语言编程输出100到200的素数的两种方法,和三步优化(逐步优化)
了解素数(只能被自己和1整除的数)概念后,写代码会容易很多 <1>这个版本的程序没有经过优化,是根据最基本的概念写出的代码 #include<stdio.h> #include<stdlib.h> int main() { int i, m; for (i = 100; i <= 200; i++) { for (m = 2; m <= i; m++) { if (i == m)//输出条件 printf("%4d", i); if (i
c语言:实现对于给定的正整数N,依次打印出小于等于N的所有素数。两种方法及其优化
请编写一个程序,实现对于给定的正整数N,依次打印出小于等于N的所有素数. 方法一:试除法 由素数的定义得到如下程序: #include<stdio.h> int print_prime(int num)//prime表示素数 { int i = 0; for (i = 2; i <= num; i++) { int j = 0; for (j = 2; j < i; j++) { if (i%j == 0) { break; } } if (i==j) { printf("
找1~100之间素数的两种比较简单的方法
方法一:利用一个布尔类型的值的判断,优点想法更直接易懂 public static void main(String[] args) { for(int i=2;i<=100;i++){ boolean b=true; for(int n=2;n<i;n++){ if(i%n==0){ b=false; break; } } if(b==true){ System.out.print(i+"\t"); } } } 方法二:能被2和这个数本身以外的数整除的都不是素数.理解难但
除法求模中求逆元的两种方法
今天下午还是有点闲的,不想刷题,不想补题,突然想起昨天的training 3里I题涉及到除法取模的问题,就来总结一下 首先对于模运算来说,是没有对于除法的取模的(即没有(a/b)%mod==a%mod/b%mod),但是在很多题目中都涉及到除法取模,所以就必须要了解或者掌握,对于除法取模以(a/b)%mod来说,我们首先需要得到b的逆元,根据逆元的定理 对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元. 然后就是求逆元的两种方法. 第一种方法就是比较普遍的,也是挺基础的,就是
一、查看Linux内核版本命令(两种方法):
一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [[email protected]CentOS home]# cat /proc/versionLinux version 2.6.32-431.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013 2.uname -a [
利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码
要想提取车牌号,首先你要定位车牌区域嘛,本文分别两种方法用,即颜色和形态学的方法,对车牌区域进行判定.说得是两种方法,其实两种方法并无多大的区别,只是有一步的判断标准不一样而已,你看了下面整理出的的思路就知道两者的区别真的很小了. 方法一:利用颜色提取车牌区域的思路: ①求得原图像的sobel边缘sobelMat ②在HSV空间内利用车牌颜色阈值对图像进行二值化处理,得到图像bw_blue→ ③由下面的判别标准得到图像bw_blue_edge for (int k = 1; k != heigh
ios图片拉伸两种方法
ios图片拉伸两种方法 UIImage *image = [UIImage imageNamed:@"qq"]; 第一种: // 左端盖宽度 NSInteger leftCapWidth = image.size.width * 0.5f; // 顶端盖高度 NSInteger topCapHeight = image.size.height * 0.5f; // 重新赋值 image = [image stretchableImageWithLeftCapWidth:leftCapW
Android第五期 - 更新自己的apk本地与网络两种方法
首先是本地: ParseXmlService部分: package com.szy.update; import java.io.InputStream; import java.util.HashMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element
Linux中生成密钥的两种方法
Linux中生成密钥的两种方法 SSH服务支持一种安全认证机制,即密钥认证.所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(publickey), 任何人都可以看到其内容,用于加密:另一个称为密钥(privatekey),只有拥有者才能看到,用于解密.通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难. ssh的密钥认证就是使用了这一特性.服务器和客户端都各自拥有自己的公钥和密钥.如何使用密钥认证登录linux服务器呢? 在使用密钥认证远程登入linux之前,我们