Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nyoj---快速查找素数

nyoj---快速查找素数

作者头像
Gxjun
发布于 2018-03-21 03:59:42
发布于 2018-03-21 03:59:42
76700
代码可运行
举报
文章被收录于专栏:mlml
运行总次数:0
代码可运行

快速查找素数

时间限制:1000 ms  |  内存限制:65535 KB

难度:3

描述现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。

输入给出一个正整数数N(N<=2000000)

但N为0时结束程序。

测试数据不超过100组输出将2~N范围内所有的素数输出。两个数之间用空格隔开样例输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
5
10
11
0

样例输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2 3 5
2 3 5 7
2 3 5 7 11

来源经典题上传者路过这

同一道题,虽然用同一种方法,但是,效率还是有差别的....

试除法。。。(1)

也是我们最常用的。。。来打表(素数表)

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#define maxn 150000
int arr[maxn]={2,3,5,7,11};
int main()
{
    int n,i,j,k=5;
    for(i=13;i<=1999993;i++)
      {
          for(j=2;j*j<=i;j++)
          {
              if(i%j==0)  break;
          }
          if(j*j>i) arr[k++]=i;
      }
    
    while(scanf("%d",&n),n)
    {
      for(i=0;arr[i]<=n&&arr[i]!=0;i++)
      {
          if(i==0)
        printf("%d",arr[i]);
          else
        printf(" %d",arr[i]);
      }
      printf("\n");
    }
    return 0;
}      

效率不是非常的高.....

有一种比较快的方法,打表。

模板为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int prime[200000];
bool bo[10000001];

int  prime_table()
{
int i,j,flag=0;
memset(bo,0,sizeof bo);
bo[0]=bo[1]=1;
for(i=2;i<=1000;i++)
{
if(!bo[i])
{
for(j=i*i;j<=len;j+=i)
bo[j]=1;
}
}
for(i=0;i<=len;i++)
if(!bo[i])
prime[flag++]=i;
return flag //在该范围内的个数....
}

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#define maxn 150000
#define len 1999993
int prime[maxn];              //存储素数
bool isprime[len+1]={1,1};   //用来判断是否为素数,1代表不是,0代表是
void prime_table()
{
    int i,j,flag=0;
  for(i=2;i*i<=len;i++)        //对于在给定的范围内,就是打表的范围内
  {
      if(!isprime[i])         
      {
          for(j=i*i;j<=len;j+=i)
              isprime[j]=1;
      }
  }
  for(i=0;i<=len;i++)
     if(!isprime[i])
        prime[flag++]=i;
  
}
int main()
{
    int n,i;
    prime_table();
    while(scanf("%d",&n),n)
    {
          printf("%d",prime[0]);      
      for(i=1;prime[i]<=n&&prime[i]!=0;i++)
            printf(" %d",prime[i]);
      
      printf("\n");
    }
    return 0;
}      
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-08-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HDUOJ-----(1329)Calling Extraterrestrial Intelligence Again
Calling Extraterrestrial Intelligence Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4083    Accepted Submission(s): 2140 Problem Description A message from humans to extraterrestrial intelli
Gxjun
2018/03/21
8010
ECUST 09年 校赛个人训练赛第五场总结
今天战绩还行,AC了5题,今天总体没有太复杂的算法题,不过测试数据强度比之前有所增加 我的钱四题很早就过了,但是第五题很晚才出主要是代码写得太混乱,思路也错了两次 我过的题有五道,分别是ABCDG
owent
2018/08/01
3530
ACM刷题之路(二十一)大素数筛选 2019暑期集训 POJ 2689 Prime Distance
题目大致意思就是:告诉你一个s和e,求s和e之间靠的最近的两素数和离得最远的两素数,如果没有就输出There are no adjacent primes.这一句话。s和e范围为小于2,147,483,647的正整数,并且e和s最大相差不超过100W.
Designer 小郑
2023/08/01
1750
HDUOJ-----Difference Between Primes
Difference Between Primes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 832    Accepted Submission(s): 267 Problem Description All you know Goldbach conjecture.That is to say, Every even integer g
Gxjun
2018/03/21
5560
素数环-dfs+素数打表
素数环-dfs+素数打表(易理解) #include<stdio.h> #include<string.h> int a[50],b[50],vis[50],n; void prime(){ //素数打表 memset(a,0,sizeof(a)); a[0]=a[1]=1; //素数为0非素数为1 for(int i =2;(!a[i])&&i<50;i++) //a[i]=1表明是素数,则其倍数也是素数因为i就是前边的素数的倍数 for(int j=i
知识浅谈
2020/03/24
6150
2019年安徽大学ACM/ICPC实验室新生赛
A.素数分布函数\pi (n)π(n)表示小于或等于n的素数的数目。例如\pi (10)=4π(10)=4(2,3,5,7是素数)。这个函数涉及到许多高等数论的内容,甚至和黎曼猜想挂钩,目前还有很多数学家正在不断探索其中的奥秘。千里之行始于足下,现在你开始关心一个问题:在正整数域中素数的分布是怎么样的。为了探索这个问题,你需要计算出一些\pi (n)π(n)的值。
杨鹏伟
2020/09/11
6660
经典例题(一)——经典例题的归纳总结。
这里,我们要先了解素数的定义,素数也叫质数 ,即在正整数中,除了1与本身之外没有其他约数的数(1除外)。 方法一: 也就是说,这个数只能被1和它本身整除。了解这一点后我们开始入手写代码,在这里我们最容易想到的方法就是试除法,即从2开始,不断地对那个数进行试除,假设这个数是n,直到试除到n(不包含n)为止,如果没有出现可以被整除的数,则n就是素数。
诺诺的包包
2023/02/17
5440
经典例题(一)——经典例题的归纳总结。
LightOJ - 1197 区间素数筛模版
给t给样例,每个样例a,b两个数,求区间[a,b]内素数的个数,(1 ≤ a ≤ b < 2^31, b - a ≤ 100000).
用户2965768
2019/08/01
2750
【Difference Between Primes HDU - 4715】【素数筛法打表+模拟】
这道题很坑,注意在G++下提交,否则会WA,还有就是a或b中较大的那个数的范围。。
_DIY
2019/09/29
2890
最多因子数(DFS+数论+剪枝)- CodeVS 1032
数学家们喜欢各种类型的有奇怪特性的数。例如,他们认为945是一个有趣的数,因为它是第一个所有约数之和大于本身的奇数。
ACM算法日常
2018/08/07
1.1K0
最多因子数(DFS+数论+剪枝)- CodeVS 1032
2018 蓝桥杯省赛 B 组模拟赛(五) B 结果填空:素数个数
题目链接: https://nanti.jisuanke.com/t/25085
Ch_Zaqdt
2019/01/10
3490
HDUOJ------(1230)火星A+B
火星A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9808    Accepted Submission(s): 3232 Problem Description 读入两个不超过25位的火星正整数A和B,计算A+B。需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数。例如:地球上的10进制数2,在火星上记为“1,
Gxjun
2018/03/21
5530
Day2下午解题报告
预计分数:100+100+30=230 实际分数:100+100+30=230 人品爆发&&智商爆发&&手感爆发 T3数据好水,,要是把数组开大一点的话还能多得10分,,, T1洗澡 原题,不多说了。。 当时在北京花了接近一个小时才A.. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 const int MAXN=1e6; 7 cons
attack
2018/04/11
5710
PAT 甲级 1078 Hashing
1078. Hashing (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers.
ShenduCC
2018/04/27
5570
CodeFores 665D Simple Subset(贪心)
D. Simple Subset time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output A tuple of positive integers {x1, x2, ..., xk} is called simple if for all pairs of positive integers (i,  j) (1  ≤ 
ShenduCC
2018/04/26
4590
求第n个素数到第m个素数的和
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/80079784
zy010101
2019/05/25
1.1K0
[USACO1.5]回文质数 Prime Palindromes
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
风骨散人Chiam
2020/10/28
7580
基础数论总结
从右往左。可以一直递推,然后到最后一项,然后快速幂求矩阵,矩阵最终的结果就是所求结果。更新:java的矩阵通用乘法可以表示为,可以将下列代码替换道ac代码中:
bigsai
2019/09/24
7510
基础数论总结
poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
2.欧拉定理:若a与n互质。那么有a^φ(n) ≡ 1(mod n),经经常使用于求幂的模。
全栈程序员站长
2022/07/05
3230
PE刷题记
开始以为有单调性,也就是如果长度为$x$的能构成素数,那$x - 1$一定能构成素数
attack
2018/07/27
1.1K0
推荐阅读
相关推荐
HDUOJ-----(1329)Calling Extraterrestrial Intelligence Again
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验