首先,要寫一個判斷是否爲素數的函數,需要考慮到,從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); } } }