将一个偶数分解为两个素数的和并打印
2012-12-10 16:10
162 查看
首先,要写一个判断是否为素数的函数,需要考虑到,从2测试到根号N就可以,具体实现代码
之后就是主函数的判断:
问题就可以解决了。
需要注意的是~ 在主函数的算法中还有很大的优化空间,大家继续优化吧。
有什么问题可以留言询问,最后附上完整代码:
int isP(int n) { int i; int sign = 1;//标记是否为素数,这也是以后会经常用到的。 for(i = 2; i <= sqrt(n); i++) { if(n % i == 0)//当能被整除时退出。 { sign = 0; break; } } return sign; }
之后就是主函数的判断:
int main() { int i; int m; scanf("%d",&m); if(m == 2) { printf("no answer\n"); return 0; } if(m == 4) { printf("2,2\n"); return 0; } for(i = 3; i < m / 2 + 1; i++) { if(isP(i) && isP(m - i)) { printf("%d,%d\n",i,m - i); } } return 0; }
问题就可以解决了。
需要注意的是~ 在主函数的算法中还有很大的优化空间,大家继续优化吧。
有什么问题可以留言询问,最后附上完整代码:
#include<stdio.h> #include<math.h> int isP(int n) { int i; int sign = 1; for(i = 2; i <= sqrt(n); i++) { if(n % i == 0) { sign = 0; break; } } return sign; } int main() { int i; int m; scanf("%d",&m); if(m == 2) { printf("no answer\n"); return 0; } if(m == 4) { printf("2,2\n"); return 0; } for(i = 3; i < m / 2 + 1; i++) { if(isP(i) && isP(m - i)) { printf("%d,%d\n",i,m - i); } } }
相关文章推荐
- 40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
- LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)
- 华为oj 查找组成一个偶数最接近的两个素数
- 华为oj_查找组成一个偶数最接近的两个素数
- 华为OJ:查找组成一个偶数最接近的两个素数
- 验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。请输入一个偶数,将其表示成两个素数之和。
- 华为OJ——查找组成一个偶数最接近的两个素数
- 编程验证哥德巴赫猜想:任意一个充分大的偶数,可以用两个素数之和表示。如: 4 = 2 + 2 6 = 3 + 3。 **输入格式要求:"%d" 提示信息:"Input a number:\n"
- 华为机试-查找组成一个偶数最接近的两个素数
- 所谓哥德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和。
- 查找组成一个偶数最接近的两个素数
- 偶数分解成两个素数的和
- 查找组成一个偶数最接近的两个素数
- 华为OJ(查找组成一个偶数最接近的两个素数)
- 查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 质数的判断然后随机的找到一个偶数等于两个素数的和
- 歌德巴赫猜想的C语言和Java语言版源程序(给出任何一个大于6的偶数写出两个素数之和)
- LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)
- 一个偶数总能表示为两个素数之和