将一个偶数分解为两个素数的和并打印
首先,要写一个判断是否为素数的函数,需要考虑到,从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); } } }