素数和哥德巴赫

来源:互联网 发布:淘宝网靠枕 编辑:程序博客网 时间:2024/06/03 13:29
/*    验证哥德巴赫猜想 :任一充分大的偶数,可以用两个素数之和表示。    涉及到素数的判断:除了能被1 整除外,不被其他任何数整除的数。    判断素数的思路 : 从键盘输入一整数m. 计算k=sqrt(m);                      i从2变化到k,依次检查 m%i是否为0;                      若 m % i为0,则判定 m 不是素数,并终止对其余i值的检验;                      否则,令 i = i+1;并继续对其余i值进行检验,知道全部检验                        完毕为止,这时判定 m 是素数。*/#include<stdio.h>#include<stdlib.h>#include<math.h>void main(){    int i,n,p,q,flagp, flagq;    printf("please input n: ");    scanf("%d",&n);    if(n<4|| n%2 !=0)    {        printf("input data error! \n");        exit(-1);    }    p = 1;    do    {        p++;        q = n -p;        //判断P是否为素数        flagp = 1;        for(i=2; i<=(int) sqrt(p);i++)        {            if(p % i==0)            {             flagp=0;             break;            }        }        //判断q是否为素数        flagq = 1;        for(i=2;i <=(int)sqrt(q) ; i++)        {            if(q % i == 0)            {                flagq = 0;                break;            }        }    }while (flagp * flagq == 0);   //当p.q中有一个不为素数时继续循环    printf("%d=%d+%d\n",n,p,q);    //显示结果}
0 0