题目链接

题意 : 给你一个数n,让你找出几个素数,使其相加为n,输出这些素数。

思路 :

哥德巴赫猜想 :

任何一个大于 6的偶数都可以表示成两个素数之和。

任何一个大于9的奇数都可以表示成三个素数之和。

而在该题中,偶数中2本身就是个素数,奇数中小于9的都是素数,所以只要写一个判断素数的函数即可,这样不在范围内的数就可以直接判断输出了。

任何一个整数N(N>=2)最多由三个素数相加构成。要分情况考虑:

1. 如果N为偶数,1)如果N==2,直接输出;

2)如果N>2,那么N一定可以写成两个素数的和;

2.如果N为奇数,1)如果N自身就是素数,则直接输出;

2)如果N由两个素数构成,这两个素数只可能是:2 和 N-2;

3)N为三个素数之和。

 #include <stdio.h>
#include <string.h>
#include <iostream> using namespace std ; bool prime(int n)
{
for(int i = ; i * i <= n ; i++)
{
if(n % i == ) return false ;
}
return true ;
}
int main()
{
int T,n ;
scanf("%d",&T) ;
while(T--)
{
scanf("%d",&n) ;
if(n % == )
{
if(n == )
printf("2\n") ;
// else if(n == 4) printf("2 2\n") ;
else{
for(int i = ; i <= n ; i += )
{
if(prime(i) && prime(n-i))
{
printf("%d %d\n",i,n-i) ;
break ;
}
}
}
}
else
{
if(prime(n)) printf("%d\n",n) ;
else if(prime(n-)) printf("2 %d\n",n-) ;
//else if(prime(n-4)) printf("2 2 %d\n",n-4) ;
else
{
bool flag = false ;
for(int i = ; i <= n ; i += )
{
for(int j = ; j <= n ; j += )
{
if(prime(i) && prime(j) && prime(n-i-j))
{
printf("%d %d %d\n",i,j,n-i-j);
flag = true ;
break;
}
}
if(flag) break ;
}
}
}
}
return ;
}

URAL 1356. Something Easier(哥德巴赫猜想)的更多相关文章

  1. ural 1356. Something Easier(数论,哥德巴赫猜想)

    1356. Something Easier Time limit: 1.0 secondMemory limit: 64 MB “How do physicists define prime num ...

  2. *CF2.D(哥德巴赫猜想)

    D. Taxes time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  3. C#实现哥德巴赫猜想

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Goet ...

  4. code forces 382 D Taxes(数论--哥德巴赫猜想)

    Taxes time limit per test 2 seconds memory limit per test 256 megabytes input standard input output ...

  5. CF735D Taxes 哥德巴赫猜想\判定素数 \进一步猜想

    http://codeforces.com/problemset/problem/735/D 题意是..一个数n的贡献是它的最大的因子,这个因子不能等于它本身 然后呢..现在我们可以将n拆成任意个数的 ...

  6. Codeforces Round #382 (Div. 2) D. Taxes 哥德巴赫猜想

    D. Taxes 题目链接 http://codeforces.com/contest/735/problem/D 题面 Mr. Funt now lives in a country with a ...

  7. Codeforces 735D:Taxes(哥德巴赫猜想)

    http://codeforces.com/problemset/problem/735/D 题意:给出一个n,这个n可以分解成 n = n1 + n2 + -- + nk,其中k可以取任意数.要使得 ...

  8. LightOJ 1259 Goldbach`s Conjecture (哥德巴赫猜想 + 素数筛选法)

    http://lightoj.com/volume_showproblem.php?problem=1259 题目大意:给你一个数n,这个数能分成两个素数a.b,n = a + b且a<=b,问 ...

  9. Codeforces Round #324 (Div. 2) D. Dima and Lisa 哥德巴赫猜想

    D. Dima and Lisa Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/probl ...

随机推荐

  1. FastAdmin 出现慢的问题 (DB host)

    FastAdmin 出现慢的问题 用户反馈断网后 FastAdmin 后台变慢. 而且是很多同事出现一样的现象. 查看了 runtime / log 里的日志,发现 DB 时间超过 20s. 经过群里 ...

  2. android栈和队列

    android栈和队列 栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表.LinkedList数据结构是一种双向的链式结构,每一 ...

  3. etcd服务端和客户端安装

    下载地址: 服务端:http://download.csdn.net/download/wuxun1997/9841277 客户端:http://download.csdn.net/download/ ...

  4. webstorm设置修改文件后自动编译并刷新浏览器页面

    转载:http://www.cnblogs.com/ssrsblogs/p/6155747.html 重装了 webstorm ,从10升级到了2016 一升不要紧,打开老项目,开启webpakc-d ...

  5. FPGA中逻辑复制

    copy from http://www.cnblogs.com/linjie-swust/archive/2012/03/27/FPGA_verilog.html 在FPGA设计中经常使用到逻辑复制 ...

  6. 让Delphi XE5跟其他版本的Delphi共存

    找到Delphi XE5的安装根目录  ....  \Program Files (x86)\Embarcadero\RAD Studio\12.0\bin下的cglm.ini文件, 打开cglm.i ...

  7. (转)winform pictureBox后台显示图片

    本文转载自:http://blog.csdn.net/meizhiyun/article/details/8639002 1.获取本地程序图片 方法一 pictureBox1.BackgroundIm ...

  8. PL/SQL 训练05--游标

    --隐式游标--通过一个简单的SELECT ...INTO 语句提取一行数据,并放在一个局部变量中,最简单获取数据的途径 --显示游标--可以在声明单元明确的声明一个查询,这样可以在一个或多个程序中打 ...

  9. Cassandra学习六 一些知识点

    http://www.flyml.net/2016/09/08/cassandra-tutorial-java-api-example/ Cassandra对查询的支持很弱,只支持主键列及索引列的查询 ...

  10. selenium 对浏览器的操控 java

    driver.navigate().back();     后退 driver.navigate().forward();   前进 driver.navigate().refresh();    刷 ...