2464: 【入门】【P1304】哥德巴赫猜想

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:27 解决:16

题目描述

输入一个偶数 lns="http://www.w3.org/1998/Math/MathML">,验证 lns="http://www.w3.org/1998/Math/MathML">4 所有偶数是否符合哥德巴赫猜想:任一大于 lns="http://www.w3.org/1998/Math/MathML">2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 lns="http://www.w3.org/1998/Math/MathML">10lns="http://www.w3.org/1998/Math/MathML">10=3+7=5+5,则 lns="http://www.w3.org/1998/Math/MathML">10=5+5 是错误答案。

输入

第一行输入一个正偶数 lns="http://www.w3.org/1998/Math/MathML">

输出

输出 lns="http://www.w3.org/1998/Math/MathML">riptlevel="0">22 行。对于第 lns="http://www.w3.org/1998/Math/MathML"> 行:

首先先输出正偶数 lns="http://www.w3.org/1998/Math/MathML">2+2,然后输出等号,再输出加和为 lns="http://www.w3.org/1998/Math/MathML">2+2 且第一个加数最小的两个质数,以加号隔开。

样例输入 复制

10

样例输出 复制

4=2+2
6=3+3
8=3+5
10=3+7

提示

数据保证,lns="http://www.w3.org/1998/Math/MathML">410000


#include<bits/stdc++.h>
using namespace std;

bool isPrime(int x){
	if (x==1|| x==0) return 0; 
	for (int i=2;i*i<=x;i++){
		if (x%i==0)
			return 0;
	}
	return 1;
}
int main(){
	int n;
	cin>>n;
	for (int i=4;i<=n;i+=2) {
		for (int j=2;j<=i/2;j++) {
			if (isPrime(j) && isPrime(i-j)){
				cout<<i<<"="<<j<<"+"<<i-j<<endl;
				break;
			}
		}
	}
	return 0;
}