首页 > 其他分享 >哥德巴赫猜想的拓展

哥德巴赫猜想的拓展

时间:2023-05-31 16:32:45浏览次数:50  
标签:p2 p1 int 拓展 素数 vector 哥德巴赫猜想 MOD


哥德巴赫猜想:任何一个大于2的偶数,都可以表示为两个素数之和。

 

另外还有,任何一个大于5的奇数都可以表示为三个素数之和。

 

 

题目:http://acm.timus.ru/problem.aspx?space=1&num=1356

 

题意:给定一个正整数n,范围是[2,10^9],把n表示为若干个素数的和,输出一种方案,使得素数的个数最少。

 

分析:如果n是素数,那么直接输出它即可;

     否则如果n是大于2的偶数,那么根据哥德巴赫猜想它可以表示为两个素数之和,可以用Miller_Rabin判断;

     否则,n就只能是奇数且非素数,那么对于任意一个大于5的奇数,我们先判断它是否是2和一个素数的和,即判断n-2是

     否是素数,如果是,那么就可以表示为两个素数相加

     否则我们可以把它表示为3个素数之和。n-3+3=n,注意3是素数,而且n-3是偶数,这样我们可以把n表示n=p1+p2+3.

 

所以经过上面的分析,对于任意一个正整数n,我们最多可以用3个素数之和来表示它。

 

一般来说,对于一个大于2偶数n,范围在[4,10^9],表示为两个素数之和后,小的那个素数不会很大,所以我们可以在区间

[2,100000]里面枚举素数就可以了。

 

 

 

题目描述:哥德巴赫猜想认为任一大于2的偶数,都可表示成两个素数之和,比如

6 = 2+2+2

6 = 3+3

10 = 2+2+2+2+2

10 = 2+2+3+3

10 = 2+3+5

10 = 3+7

像3+7与7+3只有顺序不一样的认为是一种方式

问:给定一个10000以内的偶数,将它表示为素数的和有几种方式?(结果对10^9+7取模)

 

分析:相当于求以质数为物品体积,背包容量为10000的,可以重复选择的背包,设p[i]是第i个质数,dp[i][n]表示把正整

数n拆分为不大于p[i]的若干质数和的方案数,则有dp[i][n]=dp[i-1][n]+dp[i][n-p[i]]

 

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>

using namespace std;
typedef long long LL;
const int N = 10005;
const LL MOD = 1000000007;

bool prime[N];
int p[N];
int k;

vector<LL> v1;
vector<LL> v2;
vector<LL> *p1;
vector<LL> *p2;

void isprime()
{
    k = 0;
    int i,j;
    memset(prime,true,sizeof(prime));
    for(i=2;i<N;i++)
    {
        if(prime[i])
        {
            p[k++] = i;
            for(j=i+i;j<N;j+=i)
            {
                prime[j] = false;
            }
        }
    }
}

void Work()
{
    p1 = &v1;
    p2 = &v2;
    for(int i=0;i<N;i++)
    {
        if(i&1) p1->push_back(0);
        else    p1->push_back(1);
    }
    for(int i=1;i<k;i++)
    {
        p2->clear();
        for(int j=0;j<N;j++)
        {
            if(j < p[i]) p2->push_back((*p1)[j]%MOD);
            else         p2->push_back(((*p1)[j]%MOD + (*p2)[j-p[i]]%MOD)%MOD);
        }
        vector<LL> *tmp;
        tmp = p2;
        p2 = p1;
        p1 = tmp;
    }
}

int main()
{
    int n;
    isprime();
    Work();
    while(cin>>n)
    {
        cout<<(*p1)[n]<<endl;
    }
    return 0;
}

 

 

标签:p2,p1,int,拓展,素数,vector,哥德巴赫猜想,MOD
From: https://blog.51cto.com/u_16146153/6388129

相关文章

  • 哥德巴赫猜想python实现
    哥德巴赫猜想(Goldbach'sconjecture)是数论中存在最久的未解问题之一。这个猜想最早出现在1742年普鲁士数学家克里斯蒂安·哥德巴赫与瑞士数学家莱昂哈德·欧拉的通信中。用现代的数学语言,哥德巴赫猜想可以陈述为:“任一大于2的偶数,都可表示成两个素数之和。”这个猜想与当时欧......
  • 哥德巴赫猜想
    一问题描述两千以内大于4的正偶数都可以变成两个素数的和的形式。二设计思路将偶数全部求出存入数组然后再将分出两个数据判断是否为素数三程序流程图 四伪代码实现#include<iostream>usingnamespacestd;intmain(){ intd[2000],j=0; for(inti=4;i<2000;i++){ if(i%......
  • 越南住宅IP的独特价值:拓展越南业务的利器
    越南是一个经济蓬勃发展的东南亚国家,越来越多的国内企业和投资者寻求越南的业务拓展。而进入一个陌生的国度做生意,定然会碰见各种各样的挑战。企业、投资人有十足的把握才能在越南市场的竞争中处于不败之地。而越南住宅IP就是莫大的底气。越南住宅IP的概述在开始探讨越南住宅IP的独......
  • 用go设计开发一个自己的轻量级登录库/框架吧(拓展篇)
    给自己的库/框架拓展一下吧(拓展篇)主库:weloe/token-go:alightloginlibrary.扩展库:weloe/token-go-extensions(github.com)本篇给主库扩展一个Adapter提供简单的外部数据存储。思路一个库/框架往往不能完成所有事情,需要其他库/框架的支持才能达到更加完善的效果。本篇会......
  • 拓展欧几里得算法
    1.拓展欧的用处:求解方程\(ax+by==m\)的一组解2.拓展欧的一般性条件:对于方程\(ax+by=m\),当\(gcd(a,b)\)是m的整数倍时必定有解3.求解:设\(d=gcd(a,b)\),则特解为\(\begin{cases}x=x_0+\frac{d}{m}\quad\\y=y_0+\frac{d}{m}\quad\\\end{cases}......
  • 哥德巴赫猜想
    题目描述:哥德巴赫猜想:对于任何大于或等于4的偶数n,存在至少一对素数p1和p2,使得n=p1+p2。这个猜想还没有被证实,也没有被拒绝。没有人确定这个猜想是否确实成立。然而,对于给定的偶数,可以找到这样一对素数(如果有的话)。这里的问题是编写一个程序,报告满足给定偶数的猜想中的条件的......
  • WEB—源码拓展
    前言:WEB源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可用来做信息突破口,其中WEB源码有很多技术需要简明分析。比如:获取某ASP源码后可以采用默认数据库下载为突破,获取某其他脚本源,码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全测......
  • 通过浏览器拓展免费使用ChatGPT
    随着ChatGPT的爆火,越来越多的人有了使用ChatGPT的需求,但是自己去官网注册又有一定门槛,今天给大家分享两个浏览器插件,可以实现免费且不限次使用ChatGPT3.5服务1、Wetab新标签页安装好Wetab标签页拓展后,打开一个新的浏览器窗口,就可以在最醒目的位置看到chatAI的快捷应用窗口......
  • 信捷plc,9伺服通用程序架构,程序已经升级,程序高度模块化,可轻易拓展十几二十多个轴,,plc是
    信捷plc,9伺服通用程序架构,程序已经升级,程序高度模块化,可轻易拓展十几二十多个轴,,plc是目前性价比最高的方案,60个点10轴高速脉冲输出,走s形,正弦曲线加减速。程序采用C语言+梯形图架构。玩转信捷系统。可运用于三菱,西门子,欧姆龙等PLC架构ID:8730672586435862......
  • 基于EKF(拓展卡尔曼滤波器)与里程计算法的机器人定位的MATLAB程序
    基于EKF(拓展卡尔曼滤波器)与里程计算法的机器人定位的MATLAB程序使用EKF模型与里程计模型(Odometry)对机器人进行定位,定位的结果跟GPS定位的真实值作比较,验证两种算法的可行性。可以看出,EKF模型、里程计模型(Odometry)估计的误差变化趋势不同。EKF模型估计的误差总体趋势平稳,稳定在一定......