【链接】 我是链接,点我呀:)

【题意】

让你把一个奇数n分成最多个质数的和

【题解】

10的9次方以内,任意两个质数之间的差距最大为300
因此可以这样,我们先从i=n-2开始一直递减直到i变成最大的p(p

【代码】

import java.io.*;
import java.util.*; public class Main { static InputReader in;
static PrintWriter out; public static void main(String[] args) throws IOException{
//InputStream ins = new FileInputStream("E:\\rush.txt");
InputStream ins = System.in;
in = new InputReader(ins);
out = new PrintWriter(System.out);
//code start from here
new Task().solve(in, out);
out.close();
} static int N = 50000;
static class Task{ boolean is(int x) {
int len = (int)Math.sqrt(x);
for (int i = 2;i <=len;i++)
if (x%i==0)
return false;
return true;
} int n;
public void solve(InputReader in,PrintWriter out) {
n = in.nextInt();
int len = (int)Math.sqrt(n);
if (is(n)) {
out.println(1);
out.println(n);
return;
}
//n不是质数,n是奇数
for (int i = n-2;i >= 1;i--) {
if (is(i)) {
int rest = n-i;
if (rest==2) {
out.println(2);
out.print(i+" "+rest);
}else {
for (int j = 2;j <= rest;j++) {
if (is(j)&&is(rest-j)) {
out.println(3);
out.print(i+" "+j+" "+(rest-j));
return;
}
}
}
break;
}
}
}
} static class InputReader{
public BufferedReader br;
public StringTokenizer tokenizer; public InputReader(InputStream ins) {
br = new BufferedReader(new InputStreamReader(ins));
tokenizer = null;
} public String next(){
while (tokenizer==null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(br.readLine());
}catch(IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
} public int nextInt() {
return Integer.parseInt(next());
}
}
}

最新文章

  1. Android NDK, No rule to make target
  2. nonatomic, retain,weak,strong用法详解
  3. 树莓派如何便捷的使用pi4j
  4. IBM MQ消息中间件jms消息中RHF2消息头的处理
  5. 【转】uboot移植(一)BootLoader基本概念
  6. 在老项目中使用Gradle:更改默认目录结构
  7. windows程序设计读书笔记1——创建窗口
  8. Qt开发小工具之gif转换器(使用QMovie截取每一帧为QImage,然后用QFile另存为图片文件)
  9. 复习TextView(查漏补缺)
  10. Cow Exhibition 变种背包
  11. yii2-swiftmailer入门
  12. 图像风格迁移(Pytorch)
  13. 使用Redis构建全局并发锁
  14. Apollo 10 — adminService 全量发布
  15. bash和shell的关系
  16. Jakarta项目
  17. 【Java面试题】26 多线程有几种实现方法?同步有几种实现方法? 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
  18. 解决PHPWind局域网不能访问问题
  19. 20155325《Java程序设计》实验一(Java开发环境的熟悉)实验报告
  20. UIControl笔记

热门文章

  1. linux中touch命令参数修改文件的时间戳(转载)
  2. AutoCAD VBA添加菜单
  3. 洛谷 P1037 产生数
  4. 自动生成 html5 小页面
  5. Glide和Picassio的比较
  6. 在控制台中输出 ASP.NET 网站的跟踪信息
  7. iOS基础笔试题 - 集锦一
  8. hihocoder1365 图片排版
  9. 前端--3、JavaScript
  10. Appium Python API 汇总(中文版)