• HDOJ 1319 Prime Cuts<数论>


    学会了不难。通过这道题学习了两点:

    1:筛选法求素数。

    2:在写比较长的程序的时候,给每个功能部分加上注释,思路会更清晰。

    题意:

    1.题目中所说的素数并不是真正的素数,包括1;

    2.需要读懂题意,对于输入的n和c,如果1到n之间有偶数个素数则打印2c个数,奇数个素数则打印2c-1个数;

    3.打印的数是所有素数中位于中间位置的那些数。

    4.虽然数据量n<100.但是应确定第100+个素数是那个数,稍微把数组开大一些。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    const int maxn=1050;
    bool isprime[maxn];
    int prime[200];
    //筛选法求素数
    void Erato()
    {
        isprime[0]=false;
        isprime[1]=true;
        isprime[2]=true;
        //初始化
        for(int i=3;i<maxn;i++){
            isprime[i++]=true;//奇数
            isprime[i]=false;//偶数
        }
        //判断素数
        int n=sqrt(maxn);
        for(int i=3;i<=n;i+=2)
            for(int j=i+i;j<maxn;j+=i)
                isprime[j]=false;
        //将素数方如prime中,包括1
        prime[0]=1;
        prime[1]=2;
        int j=2;
        for(int i=3;i<maxn;i+=2)
            if(isprime[i])
                prime[j++]=i;
    }
    int main ()
    {
        Erato();
        int n,c,count;
        int printcount,str,end;
        while(~scanf("%d%d",&n,&c))
        {
            printf("%d %d:", n, c);
            count=0;
            int i=0;
            //统计素数的个数
            while(prime[i++]<=n)
                count++;
            //统计要打印素数的个数
            if(count%2)
                printcount=2*c-1;
            else
                printcount=2*c;
            // 计算数据的起始与终止位置
            if(printcount>=count)
                str=0,end=count-1;
            else{
                str=(count-printcount)/2;
                end=str+printcount-1;
            }
            for(int i=str;i<=end;i++)
                printf(" %d",prime[i]);
            printf("
    
    ");
            
        }
        return 0;
    }


    想的太多,做的太少。
  • 相关阅读:
    查询oracle数据库里面所有的表名
    mysql 触发器 trigger用法 four
    mysql 触发器 trigger用法 three (稍微复杂的)
    mysql 触发器 trigger用法 two (稍微复杂的)
    腾讯云SSL证书+阿里云负载均衡实现https转https
    关于redis  WARNING overcommit_memory is set to 0 的问题解决
    腾讯云申请免费ssl证书(1年有效期)
    阿里云创建负载均衡
    Go语言循环语句
    Go语言条件语句
  • 原文地址:https://www.cnblogs.com/pealicx/p/6115645.html
Copyright © 2020-2023  润新知