·一、实验目的

  实验目的:通过练习,熟练掌握循环语句和函数的应用

 

·二、实验原理

  哥德巴赫猜想:任何大于或者等于6的整数都可以写成两个素数之和。

  要求:

  1)  检验6-n(n>=6)之内的偶数

  2)  每个偶数写成两个整数之和的形式 例:6=3+3 8=3+5  10=3+7 等

 

·三、主要数据结构和算法

  算法分析

 

 

 

四、实验结果及分析

  1、测试结果截图

  (1)第一组测试数据及结果截图

  输入:6

  输出:6=3+3

  (2)第一组测试数据及结果截图

  输入:10

  输出:

  6=3+3

  8=3+5

  10=3+7

 

  (3)第一组测试数据及结果截图

  输入:20

  输出:

   6=3+3

  8=3+5

  10=3+7

  12=5+7

  14=3+11

  16=3+13

  18=5+13

  20=3+17

 

 

·五、心得体会

  1 为简化程序,将找素数的过程单独作为一个函数,

  2 考虑范围 ,判断的先后次序;

 

·六、源文件

#include <stdio.h>
#include <math.h>
#include <stdbool.h>//布尔类型头文件 
int abc(int m);//声明一个判断素数的函数abc 
int main()
{
    int n,i,j;
    bool f;
    scanf("%d",&n);//n为输入的整数
    for(i=6;i<=n;i=i+2)//依次检验大于等于6且小于等于n的偶数 
    {
        for(j=3;j<i;j++)//从3开始递增,依次充当i的加数 
        {
            if(abc(j)==1&&abc(i-j)==1)//判断两个加数是否均为素数 
            {
                f=1;//
                printf("%d=%d+%d\n",i,j,(i-j));break;//输出一种满足要求的情况 
            }    
            if(f!=1)
                printf("Wrong!");//如果检验失败,输出Wrong!    
        }
    }    
}
int abc(int m)//定义abc函数 
{
    int i,k;
    k=sqrt(m);    
    for (i=2;i<=k;i++)
    {
        if(m%i==0)
         break; 
    }
    if(i>k)
        return 1;
    else
        return 0;
}