哥德巴赫猜想:任一大偶数(大于等于6)都可以由两个比它小的素数相加所得。
#include <stdio.h>
#include <math.h>
main(){
int prime(int);
int n,m,i,j,a[100];
scanf("%d",&m);
for(n = 0,i = 3;i < m;i+=2){
if(prime(i)){
a[n++] = i;
}
}
/*for(i = 0;i < n;i++){
printf("%d\n",a[i]);
}*/
for(i = 0;i < n ;i++){
for(j = i;j < n;j++){
if(m == a[i]+a[j]){
printf("%d=%d+%d\n",m,a[i],a[j]);
}
}
}
}
int prime(int m){
int k,i;
k = sqrt(m);
for(i = 2;i < k+1;i++){
if(m % i == 0) break;
}
if(i == k+1)
return 1;
else
return 0;
}
算法理解:输入一个大偶数,通过prime函数找到每一个小于这个大偶数的素数存入数组,然后运用穷举法遍历求解。