题目:
德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对
输入:
输入任意>6的正偶数(<32767)
输出:
试求给出的偶数可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)
eg:
输入:1234
输出:25
思路:这个方法比较简单,先创建一个函数用来判断一个数是不是素数,再进入主函数进行输出数字的拆分判断
#include <bits/stdc++.h>
using namespace std;
//判断一个数是不是素数
bool prime(int n){
for(int i=2;i<n;i++){
if(n%i==0)//取余为0的不是素数
return false;
}
return true;
}
//进入主函数
int main() {
int n;
//输入任意的>6的正偶数(<32767)
cin>>n;
//ans为最终满足条件的对数
int ans = 0;
//A+B视为B+A,所以取数取一半即n/2
for(int i=2;i<=n/2;i++){
if(prime(i)&&prime(n-i))//n=i+(n-i),所以判断i和n-i是否为素数,都是素数则满足题意
ans++;
}
cout<<ans<<endl;
}