Goldbach`s Conjecture(LightOJ - 1259)【简单数论】【筛法】

标签: 入门讲座题解 数论


题目描述

Goldbach's conjecture is one of the oldest unsolved problems in number theory and in all of mathematics. It states:

Every even integer, greater than 2, can be expressed as the sum of two primes [1].

Now your task is to check whether this conjecture holds for integers up to 107.

Input

Input starts with an integer T (≤ 300), denoting the number of test cases.

Each case starts with a line containing an integer n (4 ≤ n ≤ 107, n is even).

Output

For each case, print the case number and the number of ways you can express n as sum of two primes. To be more specific, we want to find the number of (a, b) where

1)      Both a and b are prime

2)      a + b = n

3)      a ≤ b

Sample Input

2

6

4

Sample Output

Case 1: 1

Case 2: 1

Note

1.      An integer is said to be prime, if it is divisible by exactly two different integers. First few primes are 2, 3, 5, 7, 11, 13, ...

题意

哥德巴赫猜想:任意大于等于2的偶数,可以拆分成两个质数加和的形式。(该猜想真伪至今未得完整证明。)

给你一个\(n\),问\(n\)按照哥德巴赫猜想有几种拆分方法?\((n \leq 1e7)\)

解析

哥德巴赫猜想虽然无法证明,但在较小的数据范围内,我们是可以通过计算机求得解的。

我们先通过线性筛找到\(1e7\)内的全体质数,不超过\(67e4\)个.这样我们对于每个\(n\),只需要循环一遍质数,看看\(n\)与这个质数的差是否还是质数就可以了。这个差如果是质数,那么就多一种方案.

因为我们存有\(vis[1 \cdots n]\)数组,所以可以\(O(1)\)的判断所求差是不是一个质数.

注意:本题可以使用欧拉筛也可以使用埃氏筛(我看vjudge上的提交代码有埃氏筛的)。

考察内容:素数筛法

通过代码

/*
Problem
LightOJ - 1259
Status
Accepted
Time
236ms
Memory
14468kB
Length
798
Lang
C++
Submitted
2019-11-24 22:23:13
Shared RemoteRunId
1640384*/ #include <bits/stdc++.h>
using namespace std; const int MAXN = 1e7 + 50; int prime[670000], cnt = 0; //注意这题有内存限制,prime数组开到1e7会RE(MLE).我提前打表看了一下,1e7以内的质数不超过67e4个.
bool vis[MAXN]; void init() //欧拉筛。线性时间复杂度内筛出质数来.prime数组存质数,vis[i]数组判断i是否为质数.
{
vis[1] = 1; for(int i = 2; i <= int(1e7 + 5); i ++){ if(!vis[i])
prime[++ cnt] = i; for(int j = 1; j <= cnt && i * prime[j] <= int(1e7 + 5); j ++){
vis[i * prime[j]] = 1;
if(i % prime[j] == 0)
break;
}
} return ;
} int main()
{
init(); int T, n, times = 0; scanf("%d", &T); while(T --){
scanf("%d", &n); int ans = 0;
for(int i = 1; i <= cnt && prime[i] <= n / 2; i ++){ //只需循环到n/2即可.在(n/2, n]区间中出现的序偶<a, b>,在[2, n/2]区间也一定出现过. if(!vis[n - prime[i]]){
ans ++;
}
}
printf("Case %d: %d\n", ++ times, ans);
}
return 0; }

Goldbach`s Conjecture(LightOJ - 1259)【简单数论】【筛法】的更多相关文章

  1. Goldbach`s Conjecture LightOJ - 1259 (素数打表 哥德巴赫猜想)

    题意: 就是哥德巴赫猜想...任意一个偶数 都可以分解成两个(就是一对啦)质数的加和 输入一个偶数求有几对.. 解析: 首先! 素数打表..因为 质数 + 质数 = 偶数 所以 偶数 - 质数 = 质 ...

  2. LightOJ - 1259 - Goldbach`s Conjecture(整数分解定理)

    链接: https://vjudge.net/problem/LightOJ-1259 题意: Goldbach's conjecture is one of the oldest unsolved ...

  3. 【LightOJ1259】Goldbach`s Conjecture(数论)

    [LightOJ1259]Goldbach`s Conjecture(数论) 题面 Vjudge T组询问,每组询问是一个偶数n 验证哥德巴赫猜想 回答n=a+b 且a,b(a<=b)是质数的方 ...

  4. Pairs Forming LCM (LightOJ - 1236)【简单数论】【质因数分解】【算术基本定理】(未完成)

    Pairs Forming LCM (LightOJ - 1236)[简单数论][质因数分解][算术基本定理](未完成) 标签: 入门讲座题解 数论 题目描述 Find the result of t ...

  5. Help Hanzo (LightOJ - 1197) 【简单数论】【筛区间质数】

    Help Hanzo (LightOJ - 1197) [简单数论][筛区间质数] 标签: 入门讲座题解 数论 题目描述 Amakusa, the evil spiritual leader has ...

  6. Aladdin and the Flying Carpet (LightOJ - 1341)【简单数论】【算术基本定理】【分解质因数】

    Aladdin and the Flying Carpet (LightOJ - 1341)[简单数论][算术基本定理][分解质因数](未完成) 标签:入门讲座题解 数论 题目描述 It's said ...

  7. Sigma Function (LightOJ - 1336)【简单数论】【算术基本定理】【思维】

    Sigma Function (LightOJ - 1336)[简单数论][算术基本定理][思维] 标签: 入门讲座题解 数论 题目描述 Sigma function is an interestin ...

  8. [暑假集训--数论]poj2262 Goldbach's Conjecture

    In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in whic ...

  9. F - Goldbach`s Conjecture kuangbin 基础数论

    Goldbach's conjecture is one of the oldest unsolved problems in number theory and in all of mathemat ...

随机推荐

  1. Python 3.7的安装过程

    百度云Pyhton3.7-32位安装包: 链接:https://pan.baidu.com/s/1P5Egkl2KNt_DjhiFaDzqsg提取码:5171 百度云Pyhton3.7-64位安装包: ...

  2. 使用ul和li进行图片的布局

    使用ul和li进行浮动布局(自适应) 1 图片上下两排: 首先盒子的宽度要给100% ul包裹一个div,首先量好盒子的宽和高,并进行设置, margin 0 auto 盒子居中显示 每个li向左浮动 ...

  3. Android studio 3.4 新建项目报错Error:unable to resolve dependency for app@。。。解决办法

    试过网上很多的例子,有的设置Go to `File->Settings->Build, Execution, Deployment->Gradle->Uncheck Offli ...

  4. diango使用顺序

    使用顺序 settings 静态文件配置 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #文件夹根目录 ...

  5. 一条简单的更新语句,MySQL是如何加锁的?

    看如下一条sql语句: # table T (id )) delete : MySQL在执行的过程中,是如何加锁呢? 在看下面这条语句: : 那这条语句呢?其实这其中包含太多知识点了.要回答这两个问题 ...

  6. Fiddle无法抓取网页信息或HTTPS

    1:清除电脑根证书: 打开dos命令框,输入:certmgr.msc ![file](https://img2018.cnblogs.com/blog/1023158/201912/1023158-2 ...

  7. Python如何动态的为对象添加方法或属性,__slots__用法

    代码示例如下: import types    #使用MethodType方法需要导入包 class test(object):  #定义 一个test类,包含name属性和f()方法 def __i ...

  8. typescript与nodejs(一)最简单的webserver

    安装nodejs tsc cnpm vscode 这些略 如果网络慢,可以考虑使用CNPM 一. 基本WebServer模块环境 1. 命令行  npm init 初始化一个目录为nodejs项目 2 ...

  9. php isset()和 in_array()

    结果: 结论: isset()完胜

  10. linux命令--查找与帮助

    一.搜寻命令 1.whereis命令 whereis是搜索系统命令的命令,也就是说,whereis 命令不能搜索普通文件, 而只能搜索系统命令. 命令名称:whereis 英文原意:locate th ...