E.迷雾森林

时间限制: 1000ms 内存限制: 65535KB

问题描述

【HuJie】今天的任务是去灵隐寺后的竹林里拾干柴,最近天越来越冷,天上的乌云聚集不散。天灰蒙蒙的,走进竹林里时,树叶沙沙作响,他一直觉得这个林子很奇怪,雪天依然树叶常青。等他捡的差不多了,正打算将干柴捆好背起来时,在他面前突然跳出一只大大的【Mon-Gee Gee】猴子。“OMG,我不会遇到孙悟空了吧,但是怎么没有金箍棒呢”【HuJie】还在愣愣的想着。【Mon-Gee Gee】开口了:“小和尚,我怎么从来没有见过你?新来的吧?”【HuJie】紧张的点点头。【Mon-Gee Gee】咧嘴一笑:“新来的就要懂规矩,本大王先问你一个问题。”【HuJie】当然不怕一只猴子,于是说“你说吧,什么题?” 【Mon-Gee Gee】开了口:“我们猴子家族冬天要储藏食物过冬,今年猴子们采摘了很多坚果,需要分开存放在两个不同的树洞里。不过呢,我们猴子家族有个传统,每个储藏事物的树洞里,坚果的总数必须是素数,否则非常不吉利。现在我有n个坚果,你告诉我有多少种不同的分法。你要是答对了,我就可以答应你一件事……”【HuJie】张口就答:“不就是……”【Mon-Gee Gee】马上插了一句:“答错了可就,嘿嘿嘿……”【HuJie】一听这话吓了一跳,赶忙着手计算不敢答错,聪明的你能帮他算出问题的答案吗?

输入描述

首先输入询问次数T(1≤T≤100),之后T行每行一个正整数n(1≤n≤1000)。

输出描述

输出将n拆分成两个素数之和的方法数。

样例输入

3
2
4
10

样例输出

0
1
2

来源

2015中北大学‘计蒜客’杯新生赛

提示

2不能被拆分成两个素数和的形式,故输出0;4可以被拆分成4=2+2的形式,输出1;10可以被拆分成10=3+7和10=5+5的形式,输出2。

问题分析:

这个题与HDU2098类似,拿过来修改一下就可以了用。需要注意的是,条件有点不同。

解决本问题,首先用Eratosthenes筛选法求得必要的素数,然后用试探法求可分解的个数。对于输入的偶数sum而言,如果能够分解成两个素数之和,其中一个必然小于或等于sum/2,基于这个原理进行分解计数,最后求出所有的组合。

题目中所讲的故事,似乎与本题目的关系没那么大,绕了一大圈而已。

程序说明:

参见链接博文。

参考链接:HDU2098 分拆素数和

AC的C++程序如下:

#include <iostream>
#include <cmath>using namespace std;const int N = 1000;
int prime[N+1];// Eratosthenes筛选法
void sieveofe(int p[], int n)
{int i, j;p[0] = 0;p[1] = 0;p[2] = 1;// 初始化for(i=3; i<n; i++) {p[i++] = 1;p[i] = 0;}int max = sqrt(n);for(i=3; i<=max; i++){if(p[i]) {for(j=i+i; j<=n; j+=i)    //进行筛选p[j]=0;}}
}int main()
{int n, sum, count;sieveofe(prime, N);cin >> n;while(n--) {cin >> sum;count = 0;for(int i=2; i<=sum/2; i++) {if(prime[i] && prime[sum-i])count++;}cout << count << endl;}return 0;
}

NUC1921 E.迷雾森林【筛选法】相关推荐

  1. NUC1019 数素数【素数筛选法】

    数素数 时间限制: 1000ms 内存限制: 65536KB 问题描述 素数是的只能被1和它本身整除的自然数.判断一个数是素数的方法是使用2到该数的平方根的素数除它,若有能整除的则该数不是素数. 输入 ...

  2. 筛选法求N以内的所有素数

    素数:一个数只能被1和它本身整除的数.2是最小的素数 #include <iostream> using namespace std; #define NUM 100 char isPri ...

  3. python使用集合实现筛选法求素数-python素数筛选法浅析

    原理: 素数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作 ...

  4. 用筛选法求100以内的素数(数组)

    用筛选法求100以内的素数,要求使用数组. #include "stdafx.h" #include<iostream> using namespace std; in ...

  5. 高效的判断素数---筛选法

    前言 筛选法是啥呢? 举个例子: 2是质数那么2x2,2x3,2x4-都不是质数 3是质数那么3x2,3x3,3x4,3x5-都不是质数. 依次类推---- 简言之: 质数的倍数都不是质数 这就是筛选 ...

  6. python100以内孪生素数_python用递归筛选法求N以内的孪生质数(孪生素数)

    本人最近读完一本书<质数的孤独>,里面讲到孪生质数,就想查一下孪生质数的分布情况.其中主要用到了计算质数(素数)的方法,搜了一下,排名前几的都是用for循环来做的,感觉略微麻烦了一些,在比 ...

  7. JavaScript实现sieveOfEratosthenes埃拉托色尼筛选法算法(附完整源码)

    JavaScript实现sieveOfEratosthenes埃拉托色尼筛选法算法(附完整源码) sieveOfEratosthenes.js完整源代码 sieveOfEratosthenes.js完 ...

  8. 因子和(类素数筛选法)

    (忙着A题,总结会慢慢跟上~) 1409: 因子和 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Descrip ...

  9. c语言学习之用筛选法求100之内的素数。

    用筛选法求100之内的素数 首先我们来看一下什么是素数: 素数又称质数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除: 介绍一下筛选法: 筛选法所谓"筛选法"指的是& ...

最新文章

  1. OpenJDK 编译-Linux环境
  2. 无法删除当前已连接的用户处理办法
  3. struts2框架入门
  4. xxl-job使用实例
  5. 浅谈 Vue 项目优化
  6. [css] CSS3新增伪类有哪些并简要描述
  7. sr650服务器cpu型号,至强Gold 联想ThinkSystem SR650评测
  8. VScode中编写运行C/html文件
  9. Python--day26--封装和@property
  10. 面试官:你是如何调用 wait() 方法的?使用 if 还是 while?别答错了!
  11. 抓linux肉鸡漏洞,利用MS08067远程溢出漏洞抓肉鸡(3)
  12. RLS实现求解最小二乘确定性正则方程
  13. Spring学习02-Spring中的设计模式(一)
  14. 苹果计算机符号怎么打开,Mac电脑如何输入command(⌘)、option(⌥)、shift(⇧)等特殊符号...
  15. 读《弗洛伊德:作家与白日梦》
  16. 从0开始的编程学习计划
  17. 【测试表征】你想要的表征,这里全都有!(一)
  18. 112.Android 简单的群发微信,群发文本和图片,一键群发
  19. python中找最小值,使用循环python查找最小值
  20. PaaS将吞噬云计算?Kubernetes的市场冲击波

热门文章

  1. JavaWeb——jsp原理
  2. SpringCloudAlibabaSentinel入门教程
  3. 走在网页游戏开发的路上
  4. Windows10电脑线 下hosts文件地址
  5. IDEA(2018版)实用快捷键整理
  6. linux压缩隐藏文件,Linux下查看压缩文件内容的10种方法(小结)
  7. android 1141错误,Android Studio中报错的问题
  8. python更改数据框指定位置的数据_python – 移动数据框列并更改列顺序
  9. Python基础——continute与break(循环控制)
  10. LeetCode 300. 最长上升子序列(动态规划)