用C语言 编程 验证哥德巴赫猜想 详细请入
答案:5 悬赏:50
解决时间 2021-02-19 15:13
- 提问者网友:沉默菋噵
- 2021-02-19 10:33
用C语言 编程 验证哥德巴赫猜想 详细请入
最佳答案
- 二级知识专家网友:往事隔山水
- 2021-02-19 11:28
先给你个思路 你试着写一下你先定义一个int数组 来存放素数在判断从1-10,1-700 之间的素数 并把它们放在数组里你再定义一个变量来记录满足猜想的素数对数 如果是1对 就输出 如果不是就输出错误判断是否满足猜想 可以用俩个for循环 从第一个 一次俩个俩个相加 如果满足猜想 记录下这俩个数就这样
全部回答
- 1楼网友:woshuo
- 2021-02-19 15:55
#include "stdio.h"
#include "math.h"//是否是素数
int IsPrime(int n)
{
int i;
for (i=2;i<n/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这个数符合哥德巴赫猜想,他是哪两个质数的和。
#include "math.h"//是否是素数
int IsPrime(int n)
{
int i;
for (i=2;i<n/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这个数符合哥德巴赫猜想,他是哪两个质数的和。
- 2楼网友:蕴藏春秋
- 2021-02-19 14:21
#include "stdio.h"
#include "math.h"//是否是素数
bool isPrime(int num)
{
for (int i=2;i<=(int)sqrt(num*1.0);++i)
{
if(num%i==0)
return false;
}
return true;
}void Output(int num)
{
for(int i = 2; i<=num/2;++i)
{
if(isPrime(i) && isPrime(num-i))
{
printf("%d=%d+%d\n",num,i,num-i);
break;
}
}
}
void main()
{
Output(10);
Output(700);
int n=0;
scanf("%d",&n);
}
#include "math.h"//是否是素数
bool isPrime(int num)
{
for (int i=2;i<=(int)sqrt(num*1.0);++i)
{
if(num%i==0)
return false;
}
return true;
}void Output(int num)
{
for(int i = 2; i<=num/2;++i)
{
if(isPrime(i) && isPrime(num-i))
{
printf("%d=%d+%d\n",num,i,num-i);
break;
}
}
}
void main()
{
Output(10);
Output(700);
int n=0;
scanf("%d",&n);
}
- 3楼网友:轻熟杀无赦
- 2021-02-19 13:16
我暂时保留我的看法!
- 4楼网友:蓝房子
- 2021-02-19 12:04
#include<stdio.h>
int prime(int n)
{for(int i=2;i*i<=n;i++)
if(n%i==0)return 0;
return n>1;
}
int main()
{int x,i;
scanf("%d",&x);
for(i=2;i<=x/2;i++)
if(prime(i)&&prime(x-i))
{printf("%d+%d=%d ",i,x-i,x);
return 0;
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯