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

Python013

【c语言】如何验证哥德巴赫猜想?,第1张

测试结果:

哥德巴赫猜想,请输入一个数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=2i<=n/2i++)

{

if(n%i==0)

return 0

}

return 1

}

int gotbaha(int n)

{

int i

for(i=2i<ni++)

{

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=2i<=n/2i++) 【i<=n/2】即可

楼主好运!PS:Negamax编写!

首先更正一下,哥德巴赫猜想是不小于6的偶数……符合你要求的程序如下,可以运行:

#include<stdio.h>

int isprime(int n)/*判断n是否为素数的函数*/

{

int j,x

for(j=2j<nj++)

if(n%j==0)

{

x=0

break

}else

x=1

return(x)

}

main()

{

int n,i

printf("请输入一个不小于6的偶数:\n")

scanf("%d",&n)

while(n<6||n%2!=0)

{

printf("您的输入有误,请重新输入:\n")

scanf("%d",&n)

}

for(i=3i<(n/2)i++)

{

if(isprime(i)!=0)

if(isprime(n-i)!=0)

printf("%d可以写成%d与%d之和。\n",n,i,n-i)

}

}