大量偶数的哥德巴赫猜想
本帖最后由 肥喵奶黄包 于 2018-11-25 15:45 编辑输入两个正整数uStart、uCount,从uStart(如果它是偶数)或uStart+1(如果它是奇数)开始,验证连续uCount个偶数是否符合“哥德巴赫猜想”,并输出偶数等于两个质数之和的形式。求代码!!!!!!!!!
运行截图为
你认真的吗?楼主 import math
ustart = int(input(":"))
ucount = int(input(":"))
#这里判断你输入的奇数还是偶数
def panduan(x):
if x % 2 == 0:
return x
else:
return x+1
#这里获取符合条件的所有素数
def ss(n):
num=[];
i=2
for i in range(2,n):
for j in range(2,int(math.sqrt(i))+1):
if(i%j==0):
break
else:
num.append(i)
return num;
#用变量储存起来
shushu = ss(panduan(ustart) + ucount*2)
#这里讲符合猜想的加法打印出来
def jiafa(x,shushu):
for i in shushu:
for j in shushu:
if x == i + j:
print(x,"=",i,"+",j)
return;
#以下的方法是整合以上ss()函数语句:
#return filter(lambda x: not , range(2,n+1))
#这个是猜想函数
def caixiang(x,count):
for i in range(1,count+1):
print("第",i,"个偶数: ",end="\t")
jiafa(x,shushu);
x += 2
caixiang(panduan(ustart),ucount)
#采用的是python语言
#这个代码效率极差请慎重参考!! #include<bits/stdc++.h>
using namespace std;
inline int twoprime(int a,int b) //判断两个数是否同时为质数
{
int m=max(a,b);
for (int i=2;i*i<=m;++i) //从2枚举到两数较大值的平方根即可
if (a!=i&&a%i==0||b%i==0&&b!=i) //其中一个是i的倍数就return 0;
return 0;//返回假
return 1;//返回真
}
inline void gdbh(int num) //验证数字
{
for (int i=2;i<=num/2;++i)
if (twoprime(num-i,i)) //如果i和num-i都是质数,num就满足哥德巴赫猜想
{
printf("%d = %d + %d\n",num,i,num-i); //输出
return; //验证成功,return
}
printf("验证失败!数字%d!\n",num);
exit(0);
}
int main()
{
int s,c;
scanf("%d%d",&s,&c);
if (s&1)//是奇数 就加一个一
++s;
for (int cnt=1;cnt<=c;++cnt,s+=2)//开始枚举
{
printf("第%d个偶数",cnt);
gdbh(s);
}
printf("验证成功!");
} 前路 发表于 2018-11-25 17:40
来错地方,是c或者c加加 #include<bits/stdc++.h>
using namespace std;
bool prime(int a) //判断是否为质数
{
if(a<2)return 0;
if(a==2)return 1;
for (int i=2;i*i<=a;++i) //从2枚举到平方根即可
if (a%i==0) //是i的倍数就return 0;
return 0;//返回假
return 1;//返回真
}
inline void gdbh(int num) //验证数字
{
for (int i=2;i<=num/2;++i)
if (prime(i )&&prime(num-i)) //如果i和num-i都是质数,num就满足哥德巴赫猜想
{
printf("%d = %d + %d\n",num,i,num-i); //输出
return;
}
printf("验证失败!数字%d!\n",num);
exit(0);
}
int main()
{
int s,c;
scanf("%d%d",&s,&c);
if (s&1)//是奇数 就加一个一
++s;
for (int cnt=1;cnt<=c;++cnt,s+=2)//开始枚举
{
printf("第%d个偶数",cnt);
gdbh(s);
}
printf("验证成功!");
} 楼主为什么一直不在?
页:
[1]