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;
        
     } 


      
  • 相关阅读:
    Python 字符串和list的功能翻译
    python .strip()
    python 查看对象功能
    python 字典
    洛谷 P1144 最短路计数 Label:水
    心疼自己,再见
    初赛复习 //附复习资料
    51Nod 1079 中国剩余定理 Label:数论
    转载 乘法逆元
    51Nod 1136 欧拉函数 Label:数论
  • 原文地址:https://www.cnblogs.com/valar/p/6139150.html
Copyright © 2011-2022 走看看