用C++写一个函数验证哥德巴赫猜想

用C++写一个函数验证哥德巴赫猜想,第1张

哥德巴赫猜想:a任何一个大于 6的偶数都可以表示成两个素数之和。b任何一个大于9的奇数都可以表示成三个素数之和。

代码如下:

//任一大于2的偶数,都可表示成两个素数之和。

#include<iostream>

using namespace std;

int prime(int n){

int j,k;

for(j=2;j<n;j++){

if(n%j==0){

k=0;

return(k);

break;

}else{

k=1;

return(k);

}

}

}

int main(){

int n,i;

cout<<"请输入一个不小于2的偶数:"<<endl;

cin>>n;

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

cout<<"请输入一个不小于2的偶数:"<<endl;

cin>>n;

}

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

if(prime(i)){

if(prime(n-i)){

cout<<n<<"="<<i<<"+"<<n-i<<endl;

}

}

}

}

#include<stdioh>

void main()

{int x,y,z;

int i,j;

for(x=4;x<100;x++,x++)

for(y=1;y<x;y++)

{for(i=2;i<y;i++)

if(y%i==0)

break;

if(i==y)

{ z=x-y;

for(j=2;j<=z;j++)

if(z%j==0)

break;

if(j==z)

printf("%d=%d+%d\t",x,y,z);

}

}

printf("\n");

} 这是C语言源程序,在100以内验证了哥德巴赫猜想

测试结果:

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

34

猜想:34=3+31

猜想:34=5+29

猜想:34=11+23

猜想:34=17+17

猜想:34=23+11

猜想:34=29+5

猜想:34=31+3

请按任意键继续

代码:

#include "stdioh"

#include "stdlibh"

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;i<n;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编写!

#include<stdioh>

#include<mathh>

int isPrime(int n);

int main()

{

 int m,p;

 printf("请输入一个正整数:");

 scanf("%d",&m);

 p=isPrime(m);

 if(p==1)

  printf("\n%d是素数\n",m);

 else

  printf("\n%d不是素数\n",m);

 return 0;

}

int isPrime(int n)

{

    int i=1;

 int x=(int)sqrt(n);

 while(++i<=x)

 {

  if(n%i==0)  

  break;

 }

    if (i>x)  return 1;

 else return 0;

}

/前不久老师的作业,我自己编的,交流一下吧/

#include <stdioh>

#include <mathh>

void main(void)

{

int x,i,j,m,f;

printf("很抱歉,本程序只能验证大于等于6的哥德巴赫猜想\n");

printf(" calc:\n");

scanf("%d",&x);

if((x%2==0)&&(x>=6))

{

for(i=3;i<=x/2;i+=2)

{

f=1;

for(j=2;j<=sqrt(i);j++)

{

if(i%j==0)

{

f=0;

break;

}

}

if(f==1)

m=x-i;

for(j=2;j<=sqrt(m);j++)

{

if(m%j==0)

{

f=0;

break;

}

}

if(f==1)

{

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

break;

}

}

}

else

{

printf("您的输入不满足要求!\n");

}

getchar();

}

这是程序:

#include<stdioh>

#include<mathh>

/// <summary>

/// 判断一个数是否是素数

/// </summary>

/// <param name="intNum">要判断的数</param>

/// <returns>如果是,返回true,否则,返回false</returns>

static bool IsPrimeNumber(int intNum)

{

bool blFlag = true; //标识是否是素数

if (intNum == 1 || intNum == 2) //判断输入的数字是否是1或者2

blFlag = true; //为bool类型变量赋值

else

{

int sqr =(int)(sqrt((double)intNum)); //对要判断的数字进行开方运算

for (int i = sqr; i >= 2; i--) //从开方后的数进行循环

{

if (intNum % i == 0) //对要判断的数字和指定数字进行求余运算

{

blFlag = false; //如果余数为0,说明不是素数

}

}

}

return blFlag; //返回bool型变量

}

/// <summary>

/// 判断一个数是否符合哥德巴赫猜想

/// </summary>

/// <param name="intNum">要判断的数</param>

/// <returns>如果符合,返回true,否则,返回false</returns>

static bool ISGDBHArith(int intNum)

{

bool blFlag = false; //标识是否符合哥德巴赫猜想

if (intNum % 2 == 0 && intNum > 6) //对要判断的数字进行判断

{

for (int i = 1; i <= intNum / 2; i++)

{

bool bl1 = IsPrimeNumber(i); //判断i是否为素数

bool bl2 = IsPrimeNumber(intNum - i); //判断intNum-i是否为素数

if (bl1 & bl2)

{

//输出等式

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

blFlag = true;

//break;

//符合哥德巴赫猜想

}

}

}

return blFlag; //返回bool型变量

}

void main()

{

int a=0;

printf("输入一个大于6的偶数:\n");

scanf_s("%d",&a,10);

bool blFlag = ISGDBHArith(a); //判断是否符合哥德巴赫猜想

if (blFlag)

{

printf("%d能写成两个素数的和,所以其符合哥德巴赫猜想。",a);

}

getchar();

getchar();

}

以上就是关于用C++写一个函数验证哥德巴赫猜想全部的内容,包括:用C++写一个函数验证哥德巴赫猜想、c语言中怎么样编程序验证 哥德巴赫猜想。用最简单的C语言。谢谢咯!、【c语言】验证哥德巴赫猜想等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9341014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存