我们可以改进一下三楼的思路
第一步:检查要验证的数的一半是不是一个质数,是就满足猜想,不是就继续
第二步:建立从3开始的小于要验证的数的一半的质数表
第三步:把表中的每个数都拿来试一遍
第一小步:先看要验证的数能否被表中要试的数整除,能就试下一个,不能就下一小步
第二小步:要验证的数与要试的数之差是否质数,是就满足猜想,不是就试下一个
你看一下,下面这个连接,或许对你有帮助,如果你有兴趣,可以将我的那个算法落实为代码
http://bbs.bc-cn.net/bbs/dispbbs.asp?boardID=56&ID=5982&page=1
楼主想要的
#include <stdio.h> #include <stdlib.h>
int judge(int x) { int i,y=0; for(i=2;i<x;i++) if(x%i==0) break; if(i>=x) y=1; return y; }
int main(int argc, char *argv[]) { int n,p,q; printf("请输入一个偶数:\n"); scanf("%d",&n); for(p=2;p<=n/2;p++) if(judge(p)==1) if(judge(n-p)==1) break; printf("这两个素数是:"); printf("%d %d\n",p,n-p); system("PAUSE"); return 0; }