打素数表?

筛选法构造素数表 1、素数的定义 指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数(不包括0)整除的数。 2、判断一个数是否为素数的朴素算法 根据素数的定义,我们很容易想到的一种判断方法就是:对于大于1的正整数n,从2开始到n-1依次判断是不是n的因子,如果存在一个数是n的因子,那么n就不是素数,否则就是素数。很显然这样的算法,时间效率为O(n) 3、稍做优化后的算法 阅读详情



刚刚水了道 Yandex 2013资格赛 的题目:

Prime problem

Time limit 3 seconds
Memory limit 256Mb
Input stdin
Output stdout

Legend

For a given integer n ≤ 4 ⋅ 104, find all positive integers k ≤ n such that k2=p1 ⋅ p2+1, where p1 and p2are primes.

Input format

The first line of input contains one integer n (4 ≤ n ≤ 4 ⋅ 104).

Output format

Print all appropriate values of k in arbitrary order. Separate consecutive values by spaces and/or newlines.

Sample 1

Input Output
4
4

Sample 2

Input Output
10
4
6


------------------------------------------------------------------------------------------------------------------------------%

------------------------------------------------------------------------------------------------------------------------------%


题意: k2=p1 ⋅ p2+1,输出小于 n 的所有 k 值。

很简单的一道题,打表让我打坏了,只能搜模板了。搜到一个不错的模板。


8<--------------------------------------------------------------------------------------------------------------------------%


#include<stdio.h>
#include<math.h>
#include<string.h>

#define MAX_NUMBER 40010
int prime_number = 0;
int prime[MAX_NUMBER];
int ans[MAX_NUMBER];

void getPrime() {
    prime[++prime_number] = 2;
    for (int i = 3; i <= MAX_NUMBER; i++) {
        int j;
        for (j = 1; prime[j] * prime[j] <= i; j++) {
            if (i % prime[j] == 0) {
                break;
            }
        }
        if (prime[j] * prime[j] > i) {
            prime[++prime_number] = i;
        }
    }
}

int main(){
    int n;
    int cnt = 0;
    getPrime();
    for(int i=1; i<prime_number; i++){
        if(prime[i]+2==prime[i+1])
            ans[cnt++] = prime[i]+1;
    }
    while(scanf("%d", &n) != EOF){
        for(int i=0; i<cnt; i++){
            if(ans[i] <= n)
                printf("%d\n", ans[i]);
            else break;
        }
    }
    return 0;
}



isPrime()函数:判断素数,构造素数表 1.计算各位数字之和 char n[101]; int sum = 0; int i = 0; //计算各位数字之和 while (n[i] != 0) { **int num = n[i] - '0';//将字符转换为数字** sum += num; i++; } 2.字符串的复制 strcpy()函数 头文件:#include <string.h> 例子: #include <stdio.h> #include <string.h&g 阅读详情

相关推荐

探索素数:一亿以内素数表的综合解析

素数,也称为质数,是大于1的自然数中,除了1和它本身以外不再有其他因数的数。例如,2、3、5、7、11等都是素数。素数是数论研究的基础对象,它们在数学的许多领域中扮演着至关重要的角色。素数在数学上的重要性体现在多个方面:唯一分解定理:这个定理指出,任何大于1的自然数都可以被写成素数的乘积,并且这样的分解方式是唯一的(不考虑因数的顺序)。这个定理是数论中的核心,也是许多数学证明和算法的基础。密码学:在现代密码学中,素数的使用是许多加密算法的基石,如RSA算法。

weixin_35238815的博客 1317

素数打表(4种方法)

1既不是素数也不是合数 打表:是一种典型的用空间换时间的做法,一般指将所有可能需要用到的结果事先计算出来,这样以后后面需要用到时就可以直接查表获得。 在什么情况下我们需要打表? (1)在程序中一次性计算出所有需要用到的结果,之后查询直接取这些结果。 举个例子,假如我们算Fibonacci数中的F(n)我们假如需要算很多次Q次 比如:(10^6),每次我们都是从头开始算的,对于Q次查询就会产...

Harington的博客 7924

用C语言素数打表

素数,应用很广泛的一个数据分类,为方便学习和使用素数。特传此用C语言实现的素数打表。

素数打表(两种方法)

1.void init() //预处理[1,1e6]范围内的素数 { //i既是【2,1e6】的数,又是下面for循环中每个素数的倍数(2倍到1e6倍) for(int i=2; i<1000000; i++) { if(!isprime[i]) prime[num_prime++]=i;

nhl19961226的博客 503

多仓智能订单路由与动态优化方案设计

现在有很多商家会有多个仓库,并分布在不同的城市中,当用户下单后会根据商品库存及订单信息将订单分配到对应的仓库进行发货,如就近原则,本期基于多仓库设计一套订单路由方案,包含核心逻辑、规则优先级和实施方案,适用于多仓协同的订单自动分配场景

14年产品经理老兵,想把自己的经验及总结分享给大家,只讲思路及实操,不讲废话 2481

深入浅出DNS系列(一)- DNS杂谈

黄丝玛:班达山,你好,我记性不好,你告诉我搜狐、新浪的网站IP地址好吗? 班达山:你问问DNS先生吧,他专门干这买卖的

jiangsd198的博客 4129

打印素数表

打印素数表需要经常用到,在网上找了许多,最终找到一个非常有效率的方法分享给大家 #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;cstdio&gt; #include&lt;ctime&gt; #include&lt;algorithm&gt; using namespace std; int n; bool visit[...

ACM_Colas_125的博客 427

DNN加速器脉动阵列轻量级瞬时故障检测

本文系统综述了面向深度神经网络(DNN)脉动阵列加速器的轻量级瞬时故障检测技术。通过分析比较算法级校验(ABFT)、数值异常监测(剪裁、中值滤波等)、硬件编码检错(AN码、剩余码)以及选择性冗余等方案,指出这些方法能以5%-10%的开销实现对权重和激活比特翻转的高效检测,远低于传统ECC/冗余计算的成本。研究显示,结合多种轻量技术可构建多层防护体系,在保障推理可靠性的同时保持加速器的高性能特性。该成果为安全关键领域的DNN加速器设计提供了重要参考。

欢迎交流! 1074

素数筛(打素数表)

在做某些题的时候,我们需要用到一个素数的有序表。一般打表的方法就是筛法。先贴代码 #include <cstdio> using namespace std; int P[20000]; void Prime(int n) //素数筛打表 { P[1] = 1; //1非质数 for(int i = 2;i < n;i++) { if(P[i] == 0) //...

Skyed_blue的博客 649

双端之Nginx+Php结合PostgreSQL搭建Wordpress

制作的 PG4WP 分支版本,它与所有版本的 WordPress 兼容,解决了原版的一些问题。参数,确保 PostgreSQL 正在监听默认端口(通常是 5432),或者你自定义的端口。:PG4WP 插件存在缺陷和不完整的功能,可能与最新版本的 WordPress 不兼容。的插件,它允许 WordPress 使用 PostgreSQL 数据库。,如果看到 Nginx 的默认欢迎页面,说明 Nginx 已正确安装。,如果看到 Nginx 的默认欢迎页面,说明 Nginx 已正确安装。

宇宙第一小趴菜的博客 1891

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

构造素数表

1.判断素数 判断是否能被已知的且<x的素数整除 int isPrime(int x,int knownPrimes[],int numberofKnowPrimes); int main() { //若想算出前100个素数 int prime[100]={2};//素数表,将来里面的每个元素都是素数,初始化为2,因为2,是我们已知的第一个素数 int count=1...

weixin_45087108的博客 358

Python爬虫实战:利用最新技术爬取B站视频信息

本文详细介绍了如何使用Python最新技术构建一个功能完善的B站视频信息爬虫。我们从基础爬取开始,逐步深入到反反爬策略、异步处理、数据存储和分析等高级主题。更智能的反反爬策略:使用机器学习识别验证码更高效的分布式架构:结合Kubernetes实现弹性伸缩实时数据管道:将爬取的数据实时推送到数据分析平台多平台支持:扩展支持抖音、YouTube等其他视频平台。

2201_76125261的博客 1040

梅森素数表

正在学习RSA,需要用到大素数,然后google一下,竟然没有现成的,都是要先算才有,如2的n次方减1那种,于是有了下面的梅森素数表(只算了一部分,用python的pow()函数算的).      梅森数是指形如2n − 1的数,记为Mn;如果一个梅森数是素数那么它称为梅森素数。 序号 n Mn=(2^n)-1 Mn的位数 发现时

yuhentian的专栏 1万+

Python 爬虫实战:微博自动化运营工具(点赞 / 转发 / 评论 + 反封号策略)

微博作为中国最大的社交媒体平台之一,拥有庞大的用户群体和丰富的数据资源。通过 Python 爬虫技术,我们可以实现微博的自动化运营,包括点赞、转发、评论等功能,同时采取有效的反封号策略,确保账号的安全和稳定运行。

u014481728的博客 1178

(王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作

文章目录一:线性表的定义二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素都有且只有一个前驱和后继 线性表强调有限,“所有的整数按递增次序排列”很明显不是线性表 线性表可以表示为 L=(a1,a1,...,ai+1,...,an)L=(a_{1},a_{1},...,a_{i+1},...,a_{n})L=(a1​,a1​,...,ai+1​,...,an​) a

快乐江湖的博客 3705

C语言学习1:素数的判定与素数表的生成

C语言学习1:素数的判定与素数表的生成 摘要:本文主要探究素数的判别和素数表的生成,为初学时写下作为学习笔记。 一、素数的判定 1.平方根以下遍历法 基本思想: 由数学证明可知,若要判定一个数是否为素数,只需将其除以 [ 2 , sqrt(x) ) , 其中x是这个数本身。另外为了优化计算,可以先判定是否为非2整数。基于这个思想,我们可以给出以下代码。 int isPrime ( int x ) ...

Huih_cannot_fly的博客 766

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

利用筛法求素数表

利用筛法求素数表 const int Max = 1e6 + 50; int isPrime[Max]; //素数判断结果表 int tblPrime[Max]; //所求得的素数表 int lenPrimes; //所求得的素数表的长度(个数) void initTblOfPrime() { memset(isPrime, 1, sizeof(isPrime)); isPrime[0]

u011504498的专栏 749

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

快速求素数表——埃氏筛法与欧拉筛法

快速求素数表——埃氏筛法与欧拉筛法快速求素数表埃氏筛法与欧拉筛法 埃氏筛法 埃氏筛法原理 埃氏筛法时间复杂度 埃氏筛法代码求出1000000以内的素数并且输出n个素数 欧拉筛法 欧拉筛法原理 欧拉筛法时间复杂度 埃欧拉筛法代码求出1000000以内的素数并且输出n个素数埃氏筛法埃氏筛法原理素数的定义:素数就是除了1和本身之外没有其他的约数,所以有约数的都不是素数。 因此,埃氏筛法的思想就是:先去掉

企鹅崽博客 3640

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

利用素数表快速寻找 n 以内的所有素数

三个函数,find_prime() 是利用素数表的方法,寻找素数的,find_prime_stupid()是利用另一种传统方法寻找素数的,test_func()用于测试两个函数的速度 测试数据分别是 1000,5000,10000,50000,100000,500000,1000000,2000000,5000000 以内的素数。 #include #include #incl

snndb 3018

C语言素数判断以及打印素数表

素数判断与打印素数表,是一道经典题目,相信小伙伴曾经学习C语言的时候肯定有所接触,但是你有没有真正理解这题的奥秘呢?不妨跟着我来一起思考

Code Space 1490

10^5以下素数筛法——素数表法

素数表判断模块 #include<bits/stdc++.h> using namespace std; vector<int> primeNumber = { //此处填写生成的素数表 }; bool JudgePrime(int n) { bool flag = false; for (int i : primeNumber){ if (i==n){ flag = true; return flag; } } return flag; } 素数表生成

net961231的博客 620

利用构建素数表的方法快速得到素数

今天在东华oj上做了一道题,基础部分第40题:分拆素数和,涉及到素数。 我觉得题目不难,我是这样写的: /* T40 分拆素数和 算法概述:对于一个偶数num,从2到num/2 - 1依次测试拆分是否满足要求 */ #include<stdio.h> #include<math.h> // 判断是否为素数 int isPrim(int x) { int i...

qq_41409120的博客 404

快速建立素数表

快速建立素数表比如建立50000以内的素数表#include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <vector> using namespace std; vector<int> prime(500000,1);int main() { for(int i=2;i*i<500

Jerry Lee の blog 1661
上一篇: poj2886线段树+反素数
下一篇: poj3264线段树---区间最大最小值查询(RMQ)
monkey7777
博客等级 码龄15年 55粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值