偶数分解为两个素数之和

221 阅读1分钟

题目描述

从键盘接收任意两个正整数,要求第一个正整数必须小于第二个正整数。然后把这两个数范围之内(包括这两个数)的所有偶数分解为两个素数之和,并输出每个偶数以及对应的两个素数。

示例

image.png

思路

  1. 偶数好判断,关键在于把偶数分解为两个素数之和。

  2. 可以写一个判断素数的函数,判断和为偶数的两个是否为素数,若是,则输出,若不是,继续循环遍历偶数中的和。

具体实现

#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; //输入两个数ab 
	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 33 5,输出一个即可 
					if(sushu(j) && sushu(i-j)) //二者都是素数 
						cout<<i<<":"<<j<<" "<<i-j<<endl; 
				} 
			}
		}
	} 
	return 0;
}