zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practise 1013 数素数

    题目链接 http://www.patest.cn/contests/pat-b-practise/1013

    题目大意:输入两个数M和N,输出第M个到第N个素数,输出控制为每行十个,每行最后一个数后不可以带空格

    我的想法是先用筛选法求出相当多的素数,然后将素数全部存到动态数组vector中,而后对vector中所有的书进行排序,而后根据格式输出即可

    筛选法的原理是素数的倍数都是合数,若要求出2-n的区间里所有的质数,则首先把0和1设为合数,而后从2开始遍历,每发现一个质数Ki,都把ki小于n的倍数标记为合数,遍历到合数则直接跳过。这样遍历一遍就可以把所有的合数全部标记出来,那么没有被标记的自然就是素数。

    学到了vector的排序方法。。。sort( v.begin(),v.end() )...

    PS : 忘了处理最后一行最后一个数(如果最后一行没有到十个数的情况)后面的空格(是不需要的)。PE了一发

    #include <iostream>
    #include <cstdio>
    #include <vector>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    #define maxn 1000005
    int a[1000005];
    vector <int> v;
    void oddp()
    {
        for( int i=2; i<=1000000; i++ )
                a[i]=1;
        a[0]=0;
        a[1]=0;
        for( int i=2; i<=1000000; i++ )
        {
            if(a[i]==1)
            {
                for( int j=i*2; j<=1000000; j+=i )  //倍数都不是素数
                      a[j]=0;
            }
        }
    }
    int main()
    {
        oddp();
        for( int i=2; i<=1000000; i++ )
            if( a[i]==1 )
            v.push_back(i);
        sort( v.begin(),v.end() );
        int m,n;
        while ( scanf( "%d%d",&m,&n )!=EOF )
        {
            int flag=0;
            for( int i=m; i<n; i++ )
            {
                if( flag< 9)
                {
                    printf( "%d ",v[i-1] );  
                    flag++;
                }
                else if( flag==9 )
                {
                    printf( "%d",v[i-1] );
                    flag++;
                }
                if(  flag==10 )
                {
                    printf( "
    " );
                    flag=0;
                }
            }
            printf( "%d
    ",v[n-1] );
        }
        return 0;
    }
    

      依然很水。。==

  • 相关阅读:
    关于SQL优化(转载,格式有调整)
    开篇(我想有个家,安稳的家)
    常见兼容问题
    BFC概念及应用
    浏览器私有前缀及内核
    css3新增属性
    宽高自适应
    css布局
    css3选择器
    常用标签
  • 原文地址:https://www.cnblogs.com/kiwibird/p/4799113.html
Copyright © 2011-2022 走看看