zoukankan      html  css  js  c++  java
  • pku-2909 (欧拉筛)

    题意:哥德巴赫猜想。问一个大于2的偶数能被几对素数对相加.

    思路:欧拉筛,因为在n<215,在3万多,一个欧拉筛得时间差不多4*104, 那么筛出来的素数有4千多个,那么两两组合直接打表,时间复杂度下于16*106

    则时间还是卡的过去。

    ac代码:

    #include<cstdio>
    const int N = 4e4;
    int prime[N];
    bool vis[N];
    bool is_prime[N];
    int viss[N<<2];
    int Prime()
    {
        int cnt = 0;
        for (int i = 2; i <= N; ++i)
        {
            if (!vis[i])
            {
                prime[cnt++] = i;
                is_prime[i] = 1;
            }
            for (int j = 0; j < cnt&&i*prime[j] <= N; ++j)
            {
                vis[i*prime[j]] = 1;
                if (i%prime[j] == 0)break;
            }
        }
        return cnt;
    }
    
    int main()
    {
        int k = Prime();
        for (int i = 0; i < k;++i)
        for (int j = 0; j <= i; ++j)
            viss[prime[i] + prime[j]]++;
        int n;
        while (scanf("%d", &n), n)
        {
            printf("%d
    ", viss[n]);
        }
    }
  • 相关阅读:
    Dom对象,控制html元素
    运算符总结
    数组
    变量命名规则
    css实现气泡说明框
    深入理解CSS中的层叠上下文和层叠顺序
    jquery书写
    二级导航
    iis配置
    Android ListView无法触发ItemClick事件
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/9675003.html
Copyright © 2011-2022 走看看