c语言哥德巴赫不用函数,用c语言编写哥德巴赫

【c语言】验证哥德巴赫猜想

测试结果:

创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元古交做网站,已为上家服务,为古交各地企业和个人服务,联系电话:13518219792

哥德巴赫猜想,请输入一个数n:

34

猜想:34=3+31

猜想:34=5+29

猜想:34=11+23

猜想:34=17+17

猜想:34=23+11

猜想:34=29+5

猜想:34=31+3

请按任意键继续. . .

代码:

#include "stdio.h"

#include "stdlib.h"

int isPrimeNumber(int n)

{

int i;

for(i=2;i=n/2;i++)

{

if(n%i==0)

return 0;

}

return 1;

}

int gotbaha(int n)

{

int i;

for(i=2;in;i++)

{

if(isPrimeNumber(i)isPrimeNumber(n-i))

{

printf("猜想:%d=%d+%d\n",n,i,n-i);

}

}

}

main()

{

int n;

printf("哥德巴赫猜想,请输入一个数n:\n");

scanf("%d",n);

gotbaha(n);

system("pause");

}

说明:楼主的思路很清晰,代码实现起来很顺手!

1:输入一个数n

2:哥德巴赫从2开始到n-1 一旦 i和n-i都是素数那么就打印出这个拆分结果

3:判断素数函数独立出来。

要显示不重复的:

哥德巴赫猜想,请输入一个数n:

34

猜想:34=3+31

猜想:34=5+29

猜想:34=11+23

猜想:34=17+17

请按任意键继续. . .

将int gotbaha(int n)

{

int i;

for(i=2;i=n/2;i++) 【i=n/2】即可

楼主好运!PS:Negamax编写!

c语言,编写哥德巴赫猜想

#includestdio.h

#includemath.h

int prime(int n)

{int i;

if(n2)return 0;

for(i=2;i=sqrt(n);i++)

if(n%i==0)return 0;

return 1;

}

int main()

{

int x,i;

scanf("%d",x);

for(i=2;ix/2;i++)

if(prime(i)prime(x-i))

{

printf("%d=%d+%d\n",x,i,x-i);

return 0;

}

}

怎么用C语言编程验证哥德巴赫猜想?

哇,这个问题已经被搁置4年了,我看到了就来答一下吧(虽然可能已经没人感兴趣了)

首先,听说哥德巴赫猜想已经被证明了,也就是不存在不成立的情况了,(可点击链接

然后是问题本身,如果真有不符合的,可以在for(m=3;m=k-3;m++)这个循环后面判断一下是否是循环到了尽头,即是否mk-3,如果到了尽头都不符合,那就可以输出不符合了;

至于全部不符合的情况,由于前面已经逐项输出,已经打印的事实已经无法改变,因此就无法只输出说该范围内所有数都不符合,若真的要达到那种效果,可以把你要printf的先用fprintf函数打到临时创建的文件里,然后最后根据判断不符合的个数决定全部打印还是打印一条。总之是用文件读写是一种方法。

最后呢,如果说还要改进的话,有两点可以改进下——1,我从老师那里听来判断素数的条件可以再缩小一点,也就是文中的y=x/2,可以改为 y=sqrt(x)【因为sqrt(x)的平方=x,如果小于y的整数不符合,那么大于y的数也不会符合】;

2,类似于第一点 for(m=3;m=k-3;m++)条件可改为m=k/2;【理由同1】。

呃,就是这样了,不过4年前应该提问者是大一现在应该毕业了吧~哈哈

C语言编程验证“哥德巴赫猜想”,任何大于2的偶数都是两个素数之和。

#include stdio.h

int isPrime(int);

int main() {

int n;

for (n = 4; n = 100; n += 2) {

int i;

for (i = 2; i = n / 2; i++)

if (isPrime(i)  isPrime(n - i)) {

printf("%d = %d +  %d\n", n, i, n - i);

break;return 0;}

int isPrime(int n) {int i;if (n  2)return 0;if (n == 2)

return 1;

else

for (i = 2; i * i = n; i++)

if (n % i == 0)

return 0;

return 1;

哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死,欧拉也无法证明。因现今数学界已经不使用“1也是素数”这个约定,原初猜想的现代陈述为:任一大于5的整数都可写成三个质数之和。

欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和。今日常见的猜想陈述为欧拉的版本。把命题"任一充分大的偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b"。1966年陈景润证明了"1+2"成立,即"任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数的和"。

如何用C语言编程哥德巴赫猜想?

#include

void main( )

{

int i, j, k, IsPrime;

for(i = 4; i = 100; i += 2) /*偶数i从4到100*/

{

for(j = 2; j = i / 2; j++) /* 将j从2到i/2进行测试 */

{

for(k = 2, IsPrime = 1; (k = j / 2) IsPrime; k++) /*判断j是否为素数*/

if(j % k == 0) IsPrime = 0;

if(IsPrime) { /*如果j是素数*/

for(k = 2, IsPrime = 1; (k = (i - j) / 2) IsPrime; k++) /*判断i-j是否是素数*/

if((i - j) % k == 0) IsPrime = 0;

if(IsPrime) /*如果i-j也是素数,则找到了i的一个解,将其输出,下一个偶数i*/

{

printf("%d = %d + %d\t", i, j, i - j);

break;

}

}

}

}

}

除了printf与main外,没有用到其他任何的函数,楼主不妨试一试。

用C语言验证哥德巴赫猜想

您好,#include "stdio.h"

#include "math.h"//是否是素数

int IsPrime(int n)

{

int i;

for (i=2;in/2;i++)

{

if(n%i==0)

return 0;

}

return 1;

}void Output(int n)

{

int i;

for(i = 2; i=n/2;++i)

{

if(IsPrime(i) IsPrime(n-i))

{

printf("%d=%d+%d\n",n,i,n-i);

break;

}

}

}

void main()

{

Output(107000);

printf("\n");

} IsPrime(int n)和Output(int n) 都是自定义函数,是写的人根据函数内容自己编写的。他们最后都可以在主函数中调用,其中if(IsPrime(i) IsPrime(n-i))和Output(107000) 都是他们的调用。if(IsPrime(i) IsPrime(n-i))的意思是:如果这个数i以及(n-i)都为素数,那么执行下面操作。(当IsPrime(i)为1时是素数,为0时为合数)Output(107000) 的结果为:printf("%d=%d+%d\n",n,i,n-i);即:输出107000这个数符合哥德巴赫猜想,他是哪两个质数的和。


网站栏目:c语言哥德巴赫不用函数,用c语言编写哥德巴赫
本文链接:http://scyanting.com/article/dssdseg.html