歌德巴赫猜想

/*
2000以内的不小于4的正偶数都能分解成两个素数之和(验证这个猜想的正确性)
*/
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int prime(int m);

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int i;
	int n;
	while(scanf("%d", &n) != EOF)
	{
		int ok = 0;
		for(i=2; i<=n/2; i++)
		{
			if(prime(i))
				if(prime(n-i))
				{
					printf("%d %d\n", i, n-i);
					ok = 1;
				}
				if(i!=2)
					i++;
				if(ok)
					break;
		}
	}

}

int prime(int m)
{
	int i;
	int k = sqrt(m);
	for(i=2; i<=k; i++)
		if(m%i==0)
			return 0;
		return 1;
}

时间: 2024-12-13 15:53:59

歌德巴赫猜想的相关文章

Summation of Four Primes(歌德巴赫猜想)

Summation of Four Primes 题目链接:click here~ 题目要求: 给出一个整数要你将其拆成由四个素数组成的数.如果,不能拆则输出"Impossible." 思路解析: 根据题目给出的两个猜想,可以得到.如果,一个数是奇数的话则其一定可以拆成一个奇数+一个偶数的形式,而一个数是偶数的话可拆的就有两种奇数+奇数/偶数+偶数.而Waring的猜想是一个奇数可以拆成3个素数,所以显然题目给出的一个整数是奇数的时候我们就不能保留奇数拆偶数了.我们应该一开始就把奇数拆

使用C程序验证歌德巴赫猜想

就是一个足够大的偶数可以写成两个素数的和 1 #include<stdio.h> 2 #include<math.h> 3 4 int main(void) 5 { 6 int i,j; 7 int num=30284; //任意大于6的偶数 8 int p,q; 9 int flagp,flagq; 10 11 p=1; 12 do 13 { 14 p=p+1; 15 q=num-p; 16 flagp=1; 17 flagq=1; 18 19 for(i=2;i<sqrt

hihocoder offer收割编程练习赛12 A 歌德巴赫猜想

思路: 枚举. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 6 const int MAX_N = 1000005; 7 8 int prime[MAX_N]; 9 bool is_prime[MAX_N + 1]; 10 11 int init(int n) 12 { 13 int p = 0; 14 for (int i =

歌德巴赫猜想的证明

输入代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2014年12月30日 *版 本 号:v2.0 * *问题描述:写一个函数gotbaha, 验证"每个不小于6的偶数都是两个奇素数之和",输入一个不小于6的偶数n,找出两个素数,使它们的和为n. *程序输入: 一个不小于6的偶数n *程序输出: 符合要求的两个素数 */ #include<

[Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 哥德巴赫猜想认为"每一个大于2的偶数,都能表示成两个质数之和". 给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗? 输入 一个偶数N(4 <= N <= 1000000) 输出 输出P和Q.如果有多组解,输出P最小的一组. 样例输入 10 样例输出 3 7 思路 判断和为N两个数是否为素数 代码 1 import java.util.Scanner; 2 3 pu

验证歌德巴赫的猜想

歌德巴赫猜想的近似证明 歌德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和,请编写一个Java程序,验证1-100内歌德巴赫猜想的正确性. 自己写的一个小程序,代码可能不够简洁,如有错误,请大家指正一下: import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; /** * 歌德巴赫猜想的近似证明 歌德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和, * 请编写一个Java

模板小程序】求小于等于N范围内的质数

xiaoxi666 联系邮箱: [email protected] 博客园 首页 新随笔 联系 订阅 管理 [模板小程序]求小于等于N范围内的质数 1 //筛法求N以内的素数(普通法+优化),N>=2 2 #include <iostream> 3 #include <cmath> 4 #include <vector> 5 using namespace std; 6 ///寻找N以内的质数 7 vector<int> find_Prime(int

【模板小程序】求小于等于N范围内的质数

1 //筛法求N以内的素数(普通法+优化),N>=2 2 #include <iostream> 3 #include <cmath> 4 #include <vector> 5 using namespace std; 6 ///寻找N以内的质数 7 vector<int> find_Prime(int N) 8 { 9 vector<int> prime_tmp(N,1); 10 for(int i=0; 2*i+3<=sqrt(

P和NP问题

1. 通俗详细地讲解什么是P和NP问题 http://blog.sciencenet.cn/blog-327757-531546.html NP----非定常多项式(英语:non-deterministic polynomial,缩写NP)时间复杂性类,或称非确定性多项式时间复杂性类 要计算或解决一个问题,该问题通常有一个大小规模,用n表示.例如,若分析计算一个二进制数,该数有多少位,这个位就是其大小规模.再比如,从n个数里面找出最大的那个数,这个n就是该问题的规模大小.怎么找?我们要比较n-1