前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nyoj---快速查找素数

nyoj---快速查找素数

作者头像
Gxjun
发布2018-03-21 11:59:42
7190
发布2018-03-21 11:59:42
举报
文章被收录于专栏:mlml

快速查找素数

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

难度:3

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

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

但N为0时结束程序。

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

代码语言:javascript
复制
5
10
11
0

样例输出

代码语言:javascript
复制
2 3 5
2 3 5 7
2 3 5 7 11

来源经典题上传者路过这

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

试除法。。。(1)

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

代码:

代码语言:javascript
复制
#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
复制
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
复制
#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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速查找素数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档