肥喵奶黄包 发表于 2018-11-25 15:43:37

大量偶数的哥德巴赫猜想

本帖最后由 肥喵奶黄包 于 2018-11-25 15:45 编辑

输入两个正整数uStart、uCount,从uStart(如果它是偶数)或uStart+1(如果它是奇数)开始,验证连续uCount个偶数是否符合“哥德巴赫猜想”,并输出偶数等于两个质数之和的形式。求代码!!!!!!!!!
运行截图为

前路 发表于 2018-11-25 17:01:37

你认真的吗?楼主

前路 发表于 2018-11-25 17:40:44

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语言
#这个代码效率极差请慎重参考!!

zhangjinxuan 发表于 2022-8-20 17:54:09

#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("验证成功!");
}

aaron0919 发表于 2022-8-20 20:04:42

前路 发表于 2018-11-25 17:40


来错地方,是c或者c加加

aaron0919 发表于 2022-8-21 08:52:27

#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("验证成功!");
}

zhangjinxuan 发表于 2022-9-10 10:15:28

楼主为什么一直不在?
页: [1]
查看完整版本: 大量偶数的哥德巴赫猜想