题目描述
从键盘接收任意两个正整数,要求第一个正整数必须小于第二个正整数。然后把这两个数范围之内(包括这两个数)的所有偶数分解为两个素数之和,并输出每个偶数以及对应的两个素数。
示例
思路
-
偶数好判断,关键在于把偶数分解为两个素数之和。
-
可以写一个判断素数的函数,判断和为偶数的两个是否为素数,若是,则输出,若不是,继续循环遍历偶数中的和。
具体实现
#include<bits/stdc++.h>
using namespace std;
int sushu(int n){ //判断是否为素数
if(n<=1) return 0;
for(int i=2; i<n; i++){
if(n%i==0) return 0;
}
return 1;
}
int main(){
int a,b;
cin>>a>>b; //输入两个数a和b
if(a<b){
for(int i=a; i<=b; i++){
if(i%2==0){ //i为偶数
for(int j=2; j<=i/2; j++){ // i/2是为了使输出结果不重复,例如8:5 3或3 5,输出一个即可
if(sushu(j) && sushu(i-j)) //二者都是素数
cout<<i<<":"<<j<<" "<<i-j<<endl;
}
}
}
}
return 0;
}