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

Python012

【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编写!

按照你的要求编写的验证哥德巴赫猜想的C语言程序如下

#include<stdio.h>

int isPrime(long n){

 long i

 for(i=2i<ni++)

  if(n%i==0)

   break

 if(i==n)

  return 1

 else

  return 0

}

int main(){

 int repeat,i

 long n,j

 scanf("%d",&repeat)

 for(i=1i<=repeati++){

  scanf("%ld",&n)

  for(j=1j<=n/2j++){

   if(isPrime(j)==1 && isPrime(n-j)==1){

    printf("%ld %ld\n",j,n-j)

    break

   }

  }

 }

 return 0

}

运行结果

输入 2

输入 10

输出 3 7

输入 20

输出 3 17