任何一个大于等于6的偶数都可表示为两个素数之和。请列出100-200之间的所有偶数被表示成两个素数之和的全部形式。注意:如14可表示为14=3+11,还可表示为14=7+7(不需要再考虑14=11+3)。
作者:battle 专家分:510 ![]() |
1 楼
#include<iostream.h> #include<math.h> bool prime(int n); void main() { int number,n; for(number=100;number<=200;number++) { for(n=number/2;n>1;n--) if(prime(n)&&prime(number-n)) { cout<<number<<"="<<n<<"+"<<number-n<<endl; } } } bool prime(int n) { for(int i=2;i<=sqrt(n);i++) if(n%i==0)break; if(i>sqrt(n)) return true; return false; } ![]() ![]() ![]()
此帖尚未评分 |
作者:幻雪 专家分:200 ![]() |
2 楼
1楼的朋友:
两个for语句可以改改,提高算法的效率 for(number=100;number<=200;number+=2) { for(n=number/2-1;n>1;n-=2)
![]() 其实你与昨日的我 活到今天变化甚多 此帖尚未评分 |
作者:Mcemil 专家分:740 ![]() |
3 楼
引用: 可笑啊,你怎么保证n=number/2-1一定是一个奇数 歌德巴赫猜想:任何大于2的偶数,都可以表示成两个质数之和.
![]() To own c++'s soul,to be an exceptional programmer. 此帖尚未评分 |
作者:redlives 专家分:2940 ![]() |
4 楼
可以试试开辟一个数组,把100-200以内的素数存起来,这样是否方便些呢
![]() 工作原因,所上网站有限,请站内联系 革命尚未成功,同志仍需努力 just to try 此帖尚未评分 |
作者:Johnnyyeen 专家分:340 ![]() |
5 楼
1 找出1-200所有质数
2 2重循环迭代任意量个数的和,若大100,小于200则进入3 3 %2余0输出这两个数
此帖尚未评分 |
评论