URAL 1356 哥德巴赫猜想

简介:

题意:给出一个数,把它分解成几个素数相加的形式,要求分解出的素数的数量最小。

这题分情况讨论就可以了,首先需要知道哥德巴赫猜想即一个大于4的偶数可以分解成两个素数和的形式。其次需要知道奇数加奇数等于偶数,奇数减奇数等于偶数。

那么首先判断n是否是素数,如果是直接输出n就可以。

接下来判断如果n是奇数,那么先判断n-2是否是素数,如果是的话那么最小数量的素数和即n-2 与 2,如果不是那么肯定能减一个奇素数数得到一个偶数再分解成两个素数。这个奇素数首选肯定是3,因为3最小适合绝大多数情况。

如果n是偶数,那么直接分解成两个素数即可。 

分解偶数直接枚举素数暴力就可以了。这里数据弱了,n不大于maxn可行,不然还是得一个一个枚举。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
using namespace std;
#define maxn 100010
bool isprime[maxn];
int prime[maxn],nprime;
void getprime()
{
    memset(isprime,1,sizeof(prime));
    long long i,j;
    nprime=0;
    for(i=2; i<maxn; i++)
        if(isprime[i])
        {
            prime[nprime++]=i;
            for(j=i*i; j<maxn; j+=i)isprime[j]=0;
        }
}
bool judgeprime(int n)
{
    if(n<maxn)return isprime[n];
    int l=(int)sqrt(n*1.0);
    for(int i=0; prime[i]<=l; i++)
        if(n%prime[i]==0)return 0;
    return 1;
}
void divideeven(int n,int &x,int &y)
{
    for(int i=1; prime[i]<n; i++)
        if(judgeprime(n-prime[i]))
        {
            x=prime[i],y=n-x;
            return;
        }
}
int main()
{
    int t,n,x,y;
    getprime();
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        if(judgeprime(n))
        {
            printf("%d\n",n);
            continue;
        }
        if(n&1)
        {
            if(judgeprime(n-2))printf("2 %d\n",n-2);
            else divideeven(n-3,x,y),printf("3 %d %d\n",x,y);
        }
        else divideeven(n,x,y),printf("%d %d\n",x,y);
    }
    return 0;
}


目录
打赏
0
0
0
0
1
分享
相关文章
SWEET-RL:8B小模型暴打GPT-4?Meta开源强化学习黑科技,多轮任务成功率飙升6%
Meta最新开源的SWEET-RL框架通过优化多轮交互任务的信用分配机制,使Llama-3.1-8B模型在协作推理任务中的表现提升6%,性能达到顶尖大模型水平。
213 33
SWEET-RL:8B小模型暴打GPT-4?Meta开源强化学习黑科技,多轮任务成功率飙升6%
Minecraft配置文件参数说明(基岩版服务器篇)
server.properties 是 Minecraft Bedrock 服务器的核心配置文件,用于定义服务器的基本设置和运行规则。文件通常位于服务端根目录(Windows 示例路径:`C:\bedrock-server`;Linux 示例路径:`/opt/bedrock-server/` 或自定义路径)。根据需求调整参数,可实现个性化服务器配置。
330 2
云概述:云计算简明概述
本文概述了云计算的基本概念、服务模型(IaaS、PaaS、SaaS)、部署模型(私有云、社区云、公共云、混合云)、应用场景(云存储、云桌面、云游戏等)及市场趋势,强调了云计算在推动数字化转型中的重要作用。
662 60
云概述:云计算简明概述
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
206 14
Linux 10 个“who”命令示例
使用Python开发独立站的全面指南
本文详细介绍了如何使用Python及其Web框架Django和Flask快速搭建功能完善、易于管理的独立站。从Python和Web开发基础讲起,逐步覆盖环境搭建、项目创建、数据库设计、视图与URL路由、模板创建、表单处理、测试调试、部署优化及安全维护等内容,旨在帮助开发者高效构建稳定的Web应用。
297 1
基于SQL Server的打车系统数据库分析与设计
针对现有打车软件所存在的不足,以SQL Server数据库技术为基础,分析并实现了基于C/S结构的打车系统,旨在指向性地提前对运营车辆进行调度,解决用户打车难的问题,提升乘客的出行体验,同时能够缓解早晚高峰交通拥塞问题。本文从需求分析、数据库设计、数据库实现、数据、功能测试、安全性等方面出发,详细介绍了系统的设计过程。
APPcrawler基础原理解析及使用
appcrawler,使用Scala编程语言运行在JVM上,它是基于app爬虫的思想,逐渐形成了一种自动化测试方法称为“UI遍历”,其主导思想是尽可能多的去操作被测app的界面元素,每个元素至少操作一遍。
7997 0
从零到一不一样的TOC商城项目:Cloud-Alibaba+DDD,私活利器开源
刚果商城,不一样的商城系统 刚果商城是个从零到一的商城项目,包含商城核心业务和基础架构两大模块。 参照商城系统原型,推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块,通过商城系统中复杂场景,给出对应解决方案。使用 DDD 模型开发系统功能,帮助对 DDD 一知半解的开发者树立正确地开发思路。 项目地址领取:点击此处即可 能学到什么 刚果商城系统是我从事开发以来,在实际工作中遇到各种场景问题的“疑难杂症”汇总。 这些问题有些是自己遇到的,有些是其他人遇到帮忙解决的,最终把解决方案和代码实战放在刚果商城这个系统里。 这个系统没有很完整的商城业务,但是提供了偏架构
356 0
SpringBoot 整合 MongoDB 超详细(四)
在前面的文章中,我们详细的介绍了 MongoDB 的配置和使用,如果你对 MongoDB 还不是很了解,也没关系,在 MongoDB 中有三个比较重要的名词:数据库、集合、文档!
揭秘阿里妈妈智能抠图算法:简单几笔,精准抠图
阿里妈妈智能抠图编辑器旨在为设计领域提供简单、易用的在线抠图工具。用户只需要简单几笔甚至不需要任何操作即可以将目标从图片中高精度提取出来,包括头发丝,婚纱,玻璃瓶、烟雾等半透明区域。
6908 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问