#include <stdio.h>
#include <math.h>
int prime( int p );
void Goldbach( int n );
int main()
{
int m, n, i, cnt;
scanf("%d %d", &m, &n);
if ( prime(m) != 0 ) printf("%d is a prime number\n", m);
if ( m < 6 ) m = 6;
if ( m%2 ) m++;
cnt = 0;
for( i=m; i<=n; i+=2 ) {
Goldbach(i);
cnt++;
if ( cnt%5 ) printf(", ");
else printf("\n");
}
return 0;
}
/* 你的代码将被嵌在这里 */
int prime(int p){
int i,flag=0;
for(i=2;i<=p;i++){
if(p%i==0)break;
}if(p==i)flag=1;
return flag;
}
void Goldbach( int n ){
int i,j;
int zone=2;
while(1){
for(i=zone;i<=n;i++){
for(j=2;j<=i;j++)if(i%j==0)break;
if(i==j)break;
}
for(j=2;j<=n-i;j++){
if((n-i)%j==0)break;
}zone=i+1;
if((n-i)==j){printf("%d=%d+%d",n,i,n-i);break;}
}
}
注意:这是证明素数的难写低效的做法。注意我上次发的博客。