哥德巴赫猜想

7-53 验证“哥德巴赫猜想” (20分)

旧街凉风 提交于 2020-02-05 04:04:55
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。 输入格式: 输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。 输出格式: 在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。 输入样例: 24 输出样例: 24 = 5 + 19 #include<stdio.h> #include<math.h> int IsPrime(int n); int main() { int n; scanf("%d",&n); printf("%d = ",n); int p,q; for(int i = 2 ;i <= n ;i ++) { if(IsPrime(i)==1) { if(IsPrime(n-i)==1) { printf("%d + %d\n",i,n-i); break; } } } return 0; } int IsPrime(int n) { if(n==1) return 0; else { for(int i = 2; i <= sqrt(n); i++) { if(n%i=

哥德巴赫猜想(1e5)

和自甴很熟 提交于 2020-01-21 23:45:21
#include <bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 10; bool notprime[MAXN]; int n; void init() { memset(notprime, false, sizeof(notprime)); notprime[0] = notprime[1] = true; for (int i = 2; i < MAXN; i++) { if (!notprime[i]) { if (i > MAXN / i) continue; for (int j = i * i; j < MAXN; j += i) { notprime[j] = true; } } } } int main() { init(); while (scanf("%d", &n) != EOF) { for (int i = 2; i <= n / 2; i++) { if (!notprime[i] && !notprime[n - i]) { printf("%d %d\n", i, n - i); } } printf("\n"); } return 0; } 来源: CSDN 作者: Leonardoss 链接: https://blog.csdn.net/weixin_42769575

【筛素数】P1579 哥德巴赫猜想(升级版)

放肆的年华 提交于 2019-12-16 15:01:47
https://www.luogu.com.cn/problem/P1579 考点:埃拉托斯特尼筛法 / 欧拉筛法 题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和。质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为6除了约数1和6之外还有约数2和3。需要特别说明的是1不是质数。 这就是哥德巴赫猜想。欧拉在回信中说,他相信这个猜想是正确的,但他不能证明。 从此,这道数学难题引起了几乎所有数学家的注意。哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的“明珠”。 题目描述 现在请你编一个程序验证哥德巴赫猜想。 先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数。 输入格式 仅有一行,包含一个正奇数n,其中9<n<20000 输出格式 仅有一行,输出3个质数,这3个质数之和等于输入的奇数。相邻两个质数之间用一个空格隔开,最后一个质数后面没有空格。如果表示方法不唯一,请输出第一个质数最小的方案,如果第一个质数最小的方案不唯一,请输出第一个质数最小的同时,第二个质数最小的方案。 输入输出样例 输入 #1 2009 输出 #1 3 3 2003 题意: 输入一个奇数n(9<n<20000),找出三个素数,它们的和等于n。如果有多个答案,输出第一个质数最小的方案,以此类推。

质数与哥德巴赫猜想验证

一笑奈何 提交于 2019-12-06 05:14:55
㈠什么是质数? 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。 ㈡质数的性质 ⑴质数p的约数只有两个:1和p。 ⑵初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。 ⑶质数的个数是无限的。 ⑷质数的个数公式 是不减函数。 ⑸若n为正整数,在 到 之间至少有一个质数。 ⑹若n为大于或等于2的正整数,在n到 之间至少有一个质数。 ⑺若质数p为不超过n( )的最大质数,则 。 ⑻所有大于10的质数中,个位数只有1,3,7,9。 ㈢用JavaScript编写质数 function isPrime(n) { if (n <= 3) { return n > 1; } if (n % 2 == 0 || n % 3 == 0) { return false; } for (var i = 5; i * i <= n; i += 6) { if (n % i == 0 || n % (i + 2) == 0) { return false; } } return true; } ㈣哥德巴赫猜想 ⑴1742年,哥德巴赫给欧拉的信中提出了以下猜想:任一大于2的整数都可写成三个质数之和。 ⑵哥德巴赫猜想证明的困难在于,任何能找到的素数,在以下式中都是不成立的。2*3*5*7*。。。。。。*PN*P