zoukankan      html  css  js  c++  java
  • 欧拉筛和埃氏筛的入门例题整理

    欧拉筛

    输入 n(n≤100) 个不大于 100000 的整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。

    • 输入:

    5
    3 4 5 6 7

    • 输出:

    3 5 7

    代码区:

    #include<cstdio>
    #include<string.h>
    using namespace std;
    int main()
    {
        int a[100000],b[100],n,cnt=0;
        cin>>n;
        int maxn[100001];
        memset(a,1,sizeof(a));
        a[0]=a[1]=0;
        for(int i=2;i<100001;i++)
        {
            if(a[i])
                maxn[cnt++]=i;
            for(int j=0;j<cnt;j++)
            {
                if(i*maxn[j]>100001)
                    break;
                a[i*maxn[j]]=0;
            }
        }
        for(int i=0;i<n;i++)
        {
            cin>>b[i];
        }
        for(int j=0;j<n;j++)
        {
            if(a[b[j]])
                printf("%d ",b[j]);
        }
        return 0;
    }
    

    埃筛

    小A 有一个质数口袋,里面可以装各个质数。他从 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。口袋的负载量就是口袋里的所有数字之和。但是口袋的承重量有限,不能装得下总和超过 L(1≤L≤100000)的质数。给出 L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。

    • 输入:

    100

    • 输出

    2
    3
    5
    7
    11
    13
    17
    19
    23
    9

    代码区:

    #include<string.h>
    #include<cstdio>
    using namespace std;
    bool a[10000];
    int L;
    int main()
    {
        memset(a,1,sizeof(a));
        cin>>L;
        a[0]=a[1]=0;
        for(int i=2;i<10000;i++)
        {
            if(a[i])
            {
                for(int j=2*i;j<10000;j+=i)
                {
                    a[j]=0;
                }
            }
        }
        int sum=2,n=0;
        for(int i=3;sum<=L;i++)
        {
        if(a[i-1]){
                printf("%d
    ",i-1);
                n++;
                }
        if(a[i]) sum+=i;
        }
        printf("%d",n);
        return 0;
    }
    
    本是青灯不归客, 却因浊酒留风尘
  • 相关阅读:
    vue项目搭建过程2 -- 使用 vue cli 4.0 搭建 vue 项目
    vue项目搭建过程1 -- 环境搭建
    升级node.js版本
    git的初步了解
    期末总结
    四则运算的封装
    用户故事
    0~10的随机整数运算
    创业近一年在博客园总结一下,希望给来者一点借鉴
    PV与并发之间换算的算法换算公式
  • 原文地址:https://www.cnblogs.com/wit-panda/p/13334349.html
Copyright © 2011-2022 走看看