c语言哥德巴赫猜想

验证给定区间内的偶数是否满足哥德巴赫猜想——可以分解为两个质数之和,并输出其质数对。
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;
}

结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值