#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(", ");//不为5的倍数时,判断条件不为0
else printf("\n");//为5的倍数时判断条件为0
}
return 0;
}
/* 你的代码将被嵌在这里 */
int prime( int p )
{
int ret=1;
if(p==1){
ret=0;
}else if(p==2){
ret=1;
}else{
for(int i=2; i<p; i++){
if(p%i==0){
ret=0;
break;
}
}
}
return ret;
}
void Goldbach( int n )
{
int p = 3;//从最小奇素数开始
int t = n-p;//暂时不考虑t是否为素数
while(prime(t) != 1 || prime(p) != 1){
/*判断条件,除2以外的偶数都不是素数
而每次传入的n必为偶数,p经判断后必为奇数
而每次运算后的和不变,且当两数都为素数时才输出*/
p++;
t--;
}
printf("%d=%d+%d", n, p, t);
}
12-22
1万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)