Goldbach's Conjecture POJ - 2262 线性欧拉筛水题 哥德巴赫猜想

题意 哥德巴赫猜想:任一大于2的数都可以分为两个质数之和

  给一个n 分成两个质数之和

线行筛打表即可 可以拿一个数组当桶标记一下a[i]  i这个数是不是素数  在线性筛后面加个装桶循环即可

#include<cstdio>
#include<cstring>
using namespace std;
bool Is_Primes[1000005];
int Primes[1000005];
int cnt;
void Prime(int n){
    cnt=0;
    memset(Is_Primes,0,sizeof(Is_Primes));
    for(int i=2;i<=n;i++){
        if(!Is_Primes[i])
            Primes[cnt++]=i;
        for(int j=0;j<cnt&&i*Primes[j]<=n;j++){
            Is_Primes[Primes[j]*i]=1;
            if(i%Primes[j]==0)break;
        }
    }
    memset(Is_Primes,0,sizeof(Is_Primes));
    for(int i=0;i<cnt;i++){
        Is_Primes[Primes[i]]=1;
    }

}
int main(){
    int n;
    Prime(1000003);
    while(scanf("%d",&n)==1&&n){
        int temp=0;
        for(int i=0;i<cnt&&Primes[i]<n;i++){
        //    printf("%d \n",i);
            if(Is_Primes[n-Primes[i]]==1){
                printf("%d = %d + %d\n",n,Primes[i],n-Primes[i]);
                break;
            }
        }

    }
    return 0;
}

Goldbach's Conjecture POJ - 2262 线性欧拉筛水题 哥德巴赫猜想

原文地址:https://www.cnblogs.com/ttttttttrx/p/10279605.html

时间: 2024-10-19 04:15:02

Goldbach's Conjecture POJ - 2262 线性欧拉筛水题 哥德巴赫猜想的相关文章

Dirichlet&#39;s Theorem on Arithmetic Progressions POJ - 3006 线性欧拉筛

题意 给出a d n    给出数列 a,a+d,a+2d,a+3d......a+kd 问第n个数是几 保证答案不溢出 直接线性筛模拟即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 bool Is_Primes[1000005]; 5 int Primes[1000005]; 6 int A[1000005]; 7 int cnt; 8 void Prime(int n){ 9 cnt=0; 1

Sum of Consecutive Prime Numbers POJ - 2739 线性欧拉筛(线性欧拉筛证明)

题意:给一个数 可以写出多少种  连续素数的合 思路:直接线性筛 筛素数 暴力找就行   (素数到n/2就可以停下了,优化一个常数) 其中:线性筛的证明参考:https://blog.csdn.net/nk_test/article/details/46242401 https://blog.csdn.net/qq_40873884/article/details/79124552 https://blog.csdn.net/baoli1008/article/details/50788512

poj2478 欧拉函数水题

poj2478 欧拉函数水题 Y - Farey Sequence Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2478 Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational number

[SDOI2008]仪仗队(欧拉筛裸题)

题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如右图).  现在,C君希望你告诉他队伍整齐时能看到的学生人数. 输入输出格式 输入格式: 共一个数N 输出格式: 共一个数,即C君应看到的学生人数. 思路: 典型的欧拉筛 为了帮助萌新,我先从欧拉函数开讲 什么是欧拉函数? 定义:与一个数的约数有且只有1的数(互质)的个数(比如说2有1一个,6有1,5两

BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes筛)

题目大意:给定整数N(N <= 1e7),求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.. 思路:推一推. 设gcd(x,y) = p,则x / p与y / p互质 问题就转化成了N / p中有多少个数互质,然后累加就可以了. =>对于任意a,b,a <= N / p,b <= N / p,且a与b互质 =>gcd(a,b) == 1 现在问题就很明显了,看到这个形式就很容易想到欧拉函数,求一下phi,算一下前缀和,累加. 注意这里求欧拉一

线性(欧拉)筛&amp;欧拉函数

线性筛法 what is 线性筛??就是基于最基本的筛法的优化. 在基础的筛法上,我们发现有的数字会被重复筛,例如6既会被2枚举到也会被3枚举到,必然有重复运算. 我们的做法就是让每一个数的最小因数筛. \(FOR\) \(EXAMPLE:\) 有一个数\(2 * 2 * 3 * 5\) 有另一个数 \(3 * 3 * 3* 5\) 那么第一个数枚举到3的话,筛到的数字是\(2 * 2 * 3 * 3 * 5\) 但是在第二个数字再次枚举的时候 枚举到2时 也会枚举到\(2 * 2 * 3 *

线性欧拉筛

//欧拉函数 小于等于 n 且与n互质的正整数个数 #include <bits/stdc++.h> using namespace std; const int N = 100001; int n,p; int prime[N],phi[N],mark[N]; int main(){ cin >> n; phi[1] = 1; for(int i = 2; i <= n; ++i){ if(!mark[i]){ prime[++p] = i; phi[i] = i - 1;

hdu 1787(欧拉函数+水题)

题意:给出一个n,求小于n大于0的所有与n不互质的数的个数 是一道欧拉函数的模板题 1 #include<iostream> 2 #include<string.h> 3 #include<string> 4 #include<sstream> 5 #include<vector> 6 #include<deque> 7 #include<map> 8 #include<algorithm> 9 #includ

The Embarrassed Cryptographer POJ - 2635 同余模+高精度处理 +线性欧拉筛(每n位一起处理)

题意:给出两数乘积K(1e100) 和 一个数L(1e6)  问有没有小于L(不能等于)的素数是K的因数 思路:把数K切割 用1000进制表示   由同余模公式知   k%x=(a*1000%x+b*1000*1000%x+c*1000*1000*1000%x....) a b c等为 相应位置的三位数  这样切割可以减少模的次数 防止超时 1 #include<cstdio> 2 #include<cstring> 3 #include<vector> 4 #incl