哥德巴赫猜想 ----学习

哥德巴赫猜想

  二重哥德巴赫猜想:每个不小于6的偶数都可以表示为两个奇素数
6=3+3;8=5+3;10=5+5.......

 三重歌德巴赫猜:每个不小于9的奇数都可以表示为3哥奇素数的和
9=3+3+3; 11=3+3+5;13=3+5+5

解析
(1)两个概念
    1、素数:即质数,指在一个大于1的自然数中除了1和此整数自身外,没有被其他自然数整除的数。
    2、偶数:能被2整除的自然数
(2)判断一个数是否为素数
(3)判断并分解大小素数的和是否等于需判断的偶数

/*哥德巴赫猜想二重哥德巴赫猜想:每个不小于6的偶数都可以表示为两个奇素数
6=3+3;8=5+3;10=5+5.......三重歌德巴赫猜:每个不小于9的奇数都可以表示为3哥奇素数的和
9=3+3+3; 11=3+3+5;13=3+5+5解析
(1)两个概念1、素数:即质数,指在一个大于1的自然数中除了1和此整数自身外,没有被其他自然数整除的数。2、偶数:能被2整除的自然数
(2)判断一个数是否为素数
(3)判断并分解大小素数的和是否等于需判断的偶数*/#include "stdio.h"
#include "math.h"
/*测试n是否为素数,如果是,返回1,否则返回0*/
int IsPrimer(unsigned long n)
{
unsigned long i;           // 无符号声明 长整型变量 iunsigned long nqrt;        // 无符号声明 长整型变量 nqrt
/*
1、signed是默认的,表示这个变量是有符号的,可以存储整数和负数。2、unsigned则需要显示给出表示这个变量,没有符号值能存储数的大小,而且不能表示正负。3、signed存储符号是有代价的,代价就是存储空间中的一个比特位专门用来存储符号,这一位不能表示数值。一般来说,同类型的signed能够存储的数的绝对值大小要小于undigned。4、unsigned的作用就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32。5、signed在默认情况下声明的整型636f7079e79fa5e9819331333366306437变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。
*/
if(n==2)return 1;
if(n==1 || n%2==0)    // || 逻辑或 左右两边一个为true,整个则表达式返回true    && 逻辑与 左右两边必须同时为true,表达式才成立    !逻辑非   取反return 0;
/*如果n有两个除1和本身的两个因数,乘积等于n,则一个一定小于根号n,一个
一定大于根号n,要么则是两个因数等于根号n*/
nqrt = (unsigned long)sqrt(n);for(i=2;i<=nqrt;i+=1)
{if(n%i == 0)return 0;
}return 1;
}/*将偶数分解为两个素数,并判断“猜想是否成立”*/
int IsRight(unsigned long n,unsigned long *temNumA,unsigned long *temNumB)
{
unsigned long i;  // 从最小素数开始到这个偶数的一半,当i为素数,同时n-i也是素数时,猜想结论成立,否则不成立
unsigned long half;
half=n/2;
for(i =3;i<= half;i+=2)
{if(IsPrimer(i) && IsPrimer(n-i)){*temNumA=i;*temNumB=n-i;return 1;}
}
return 0;
}/*要求用户输入,判断,并输出结果
在主程序中,要求用户输入一个大于6的偶数,调用判断函数
判断“猜想是否成立,成立则输出等式,不成立则输出“猜想错误”*/
int main(void)
{unsigned long number;  // 被验证的数unsigned long a,b;     //和为mumber的两个素数do{printf("请输入要验证的大于等于6的偶数(输入0则退出)");scanf("%lu",&number);  // lu 32位无符号整数if(number >=6 && (number%2==0)){if(IsRight(number,&a,&b)){printf("歌德巴赫猜想对此数是正确的。\n");printf("%lu=%lu+%lu\n",number,a,b);}else{printf("%lu,歌德巴赫猜想对此数是错误的!",number);}}}while(number != 0);return 0;
}

取模与取余

取模运算又称取余运算

1、能整除时,其值为 0                                        16%4=0

2、不能整除时,其值=除数×(整商+1)-被除数       5%4=1


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部