哥德巴赫猜想: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语言】验证哥德巴赫猜想等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)