zoukankan      html  css  js  c++  java
  • 1013. 数素数 (20)

    题目描述:

        

    令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。

    输入格式:

    输入在一行中给出M和N,其间以空格分隔。

    输出格式:

    输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

    输入样例:

    5 27
    

    输出样例:

    11 13 17 19 23 29 31 37 41 43
    47 53 59 61 67 71 73 79 83 89
    97 101 103

    思路:
      运用素数筛法选出一万个素数并将他们存入数组primeArr[];
      遍历输出primeArr[M-1]到primeArr[N-1]的所有素数
      输出格式注意10的整数倍没有空格&&末尾数字primeArr[N-1]无空格
    #include<stdio.h>
    #include<math.h>
    #define M 110001
    //必须保证M的数值范围符合题目中所述的第一万个素数,否则会出现段错误,即数组内存不足 
    int Array[M];
    int primeArray[M];
    void searchPrime()
    {
        int tmp = (int)sqrt(M)+1;
        for(int i=2; i<tmp; i++)
        {
            if(Array[i] == 1)
                continue;
            for(int j=i*i; j<M; j+=i)
            {
                Array[j] = 1;
            }
        }
        
        int cnt = 0;
        for(int i=2; i<M; i++)
        {
            if(Array[i] == 0)
                primeArray[cnt++] = i;
        }
        
    }
    int main()
    {
        int m;
        int n;
        scanf("%d%d",&m,&n);
        searchPrime();
        for(int i=m-1,cnt = 1; i<n; i++)
        {
            if(cnt%10 == 0)
                printf("%d
    ",primeArray[i]);
            
            else if(i == n-1)
                printf("%d",primeArray[i]); 
            else
            printf("%d ",primeArray[i]);
            cnt++;
        }
            
    //    test
    //    printf("第一万个素数:%d",primeArray[9999]);
        
        return 0;
        
     } 


      
  • 相关阅读:
    【Henu ACM Round#17 A】Simple Game
    【Henu ACM Round #12 E】Thief in a Shop
    【Henu ACM Round#16 D】Bear and Two Paths
    【Henu ACM Round#16 A】 Bear and Game
    P4824 [USACO15FEB]Censoring (Silver) 审查(银)
    P4001 [BJOI2006]狼抓兔子
    P2444 [POI2000]病毒
    P3966 [TJOI2013]单词
    P3796 【模板】AC自动机
    P4574 [CQOI2013]二进制A+B
  • 原文地址:https://www.cnblogs.com/valar/p/6139150.html
Copyright © 2011-2022 走看看