验证给定区间内的偶数是否满足哥德巴赫猜想——可以分解为两个质数之和,并输出其质数对。
e.g. 4=2+2 6=3+3 8=3+5 ……
#include <stdio.h>
#include <stdlib.h>
int is_prime(int k);
int main()
{
int max,min;
int number;
int part_a,part_b;
int count_pair;
printf("输入测试上下限:\n");
scanf("%d %d",&max,&min);
printf("\n");
for(number=min;number<=max;number+=2) //循环所有测试数
{
count_pair=0; //质数对计数器清0
for(part_a=2;part_a<=number/2;part_a++)//循环从2到number/2间的所有质数
{
if ( is_prime(part_a)==1 )
{
part_b=number-part_a;
if ( is_prime(part_b)==1 && count_pair!=0)
{count_pair++;
printf("= %d+%d ",part_a,part_b);}
if ( is_prime(part_b)==1 && count_pair==0)//找到一个a,其另一部分b也是质数
{count_pair++;
printf("%d = %d+%d ",number,part_a,part_b);}
}
}
if(count_pair==0) //如果循环了所有a,质数对子计数器都是0,说明该偶数不可以分为两个质数
printf("哥德巴赫猜想错误");
printf("\n"); //输出完这个number下的所有质数对后,换行进入下一个number
}
return 0;
}
int is_prime(int k)
{
int isprime;
isprime=1;
for(int temp=2;temp<=k-1;temp++)
{
if(k%temp==0)
{isprime=0;
break;}
else
;
}
return isprime;
}
结果