P1304 哥德巴赫猜想(超链接)
简单说一下自己的思路:(我感觉也简单不到哪里去)
1、既然是4-N(N为偶数),可以用一个循环(for),每次加2,写出所有的偶数;
2、因为输出为素数,并且两数之和等于要解的偶数,不妨设偶数为k,较小的质数为i,判断i与(k-i)是否为质数即可;
3、当有多组解时,输出完最小解时,用break结束循环,避免出现其他情况。
下面是代码实现:
#include<iostream> #include<cmath> using namespace std; bool chg(int); int main() { int n; cin>>n; for(int k=4;k<=n;k+=2) { for(int i=2;i<=k/2;i++) { if(chg(i)&&chg(k-i)) { cout<<k<<"="<<i<<"+"<<k-i<<endl; break; } } } return 0; } bool chg(int x) { int i=2; while(i<=floor(sqrt(x))&&(x%i)!=0) i++; if(i>floor(sqrt(x))) return true; return false; }
不再过多解释,简单易懂。