哥德巴赫猜想(验证2000以内的正偶数能够分解成两个素数之和)
2017-02-23 09:02
351 查看
哥德巴赫猜想:
任何一个大于6的偶数都可以表示成两个素数之和,任何一个大于9的奇数都可以表示成三个素数之和。
试验证2000以内的正偶数能够分解成两个素数之和:
#include <iostream>
#include <math.h>
using namespace std;
//验证2000以内的正偶数能够分解成两个素数之和
//判断是否为素数
int fflag(int i)
{
int j;
//<=1不是素数
if(i<=1)
{
return 0;
}
//2是素数
if(i==2)
{
return 1;
}
//如果是偶数返回0
if(!(i%2))
{
return 0;
}
for(j=3;j<=(int)(sqrt((double)i)+1);j+=2)
{
if(!(i%j))
{
return 0;
}
return 1;
}
}
int main(int argc, char** argv) {
int i,n;
//2000以内的正偶数,从4开始,步长为2
for(i=4;i<=2000;i++)
{
for(n=2;n<i;n++)//将偶数i分解为两个整数
{
if(fflag(n))//从2开始循环判断是否为素数
if(fflag(i-n))//判断i-n是否为素数
{//分解为两个素数之和则输出
cout<<i<<"="<<n<<"+"<<i-n<<endl;
break;
}
}
if(n==i)
cout<<"error\n";
}
return 0;
}
任何一个大于6的偶数都可以表示成两个素数之和,任何一个大于9的奇数都可以表示成三个素数之和。
试验证2000以内的正偶数能够分解成两个素数之和:
#include <iostream>
#include <math.h>
using namespace std;
//验证2000以内的正偶数能够分解成两个素数之和
//判断是否为素数
int fflag(int i)
{
int j;
//<=1不是素数
if(i<=1)
{
return 0;
}
//2是素数
if(i==2)
{
return 1;
}
//如果是偶数返回0
if(!(i%2))
{
return 0;
}
for(j=3;j<=(int)(sqrt((double)i)+1);j+=2)
{
if(!(i%j))
{
return 0;
}
return 1;
}
}
int main(int argc, char** argv) {
int i,n;
//2000以内的正偶数,从4开始,步长为2
for(i=4;i<=2000;i++)
{
for(n=2;n<i;n++)//将偶数i分解为两个整数
{
if(fflag(n))//从2开始循环判断是否为素数
if(fflag(i-n))//判断i-n是否为素数
{//分解为两个素数之和则输出
cout<<i<<"="<<n<<"+"<<i-n<<endl;
break;
}
}
if(n==i)
cout<<"error\n";
}
return 0;
}
相关文章推荐
- 40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
- 哥德巴赫猜想,2000以内的正偶数分解为两个素数之和
- 初步验证哥德巴赫猜想(即:任意一个大于4的偶数,可以分解成2个质数之和*10000以内)
- 偶数分解成两个素数的和
- 哥德巴赫猜想-一个偶数可以表示为两个素数之和
- LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)
- 哥德巴赫猜想: 任何一个大于2的偶数都可以拆分为两个素数的和
- 验证任意一个大于4并且小于500的偶数都可以拆分成两个素数之和
- 验证歌德巴赫猜想对2000以内的正偶数成立 及 将一个正整数分解质因数
- 偶数分解成两个素数之和
- 将一个偶数分解为两个素数的和并打印
- 求ab之间偶数分解为两个素数。
- <2013.3.22>歌德巴赫猜想-证明1到2000的偶数都能拆成两个素数。
- LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)
- 验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。请输入一个偶数,将其表示成两个素数之和。
- 华为OJ训练之0017-170103-查找组成一个偶数最接近的两个素数
- 证明不小于6的偶数都是两个素数之和
- 查找组成一个偶数最接近的两个素数
- HWOJ 查找组成一个偶数最接近的两个素数
- 华为机试---查找组成一个偶数的最接近的两个素数