NEFU 2

其实就是筛选素数。

如,若能被2是质数,则2的倍数全是合数。如此循环。

#include <iostream>
#include <math.h>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int Max=(1<<24);
bool prime[Max+10];

bool judge(int k){
	int lim=(int)sqrt(k*1.0)+1;
	for(int i=2;i<=lim;i++)
	if(k%i==0) return false;
	return true;
}

int main(){
	memset(prime,true,sizeof(prime));
	prime[0]=prime[1]=false;
	int e=(int)sqrt(Max*1.0);
	for(int i=2;i<=e;i++){
		if(prime[i])
		for(int j=i+i;j<=Max;j+=i)
		prime[j]=false;
	}
	int n;
	while(scanf("%d",&n)!=EOF){
		int c=0,lim;
		if(n%2==0)
		lim=n/2;
		else lim=n/2+1;
		for(int i=2;i<=lim;i++){
			if(prime[i]){
				if(prime[n-i])
				c++;
			}
		}
		printf("%d\n",c);
	}
	return 0;
}

  

时间: 2024-10-15 14:15:50

NEFU 2的相关文章

nefu 462 fib组合

nefu 462 fib组合 (斐波那契数列的通项公式以及推倒过程) 分类: 数学2014-05-21 10:27 190人阅读 评论(0) 收藏 举报 题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=462 斐波那契数列的通项公式 推倒过程: 对于本题分析: 最后一行的一个变形为(6-2√5)^2/4 代码 [cpp] view plaincopyprint? #include <iostream> usi

NEFU 84 - 五指山 - [exgcd求解一元线性同余方程]

题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=84 Time Limit:1000ms Memory Limit:65536K Description 西游记中孙吾空大闹天宫,如来佛祖前来降伏他,说道:"我与你打个赌赛:你若有本事,一筋斗打出我这右手掌中,算你赢,再不用动刀兵苦争战,就请玉帝到西方居住,把天宫让你:若不能打出手掌,你还下界为妖,再修几劫,却来争吵." 那大圣闻言,暗笑道:"

NEFU 116 两仪剑法 【求最小公倍数】

题目链接:http://acm.nefu.edu.cn/JudgeOnline/status.php?problem_id=116&order=1 解题思路:求最小公倍数 #include<stdio.h> long long gcd(long long a,long long b) { if(b==0) return a; else return gcd(b,a%b); } int main() { long long m,n; while(scanf("%lld %lld

nefu 628大组合数取模

题目连接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=628 关于ACM培训的通知 Garden visiting Problem : 628 Time Limit : 1000ms Memory Limit : 65536K description There is a very big garden at Raven's residence. We regard the garden as an n*m rect

nefu 650 max num

题目:经典dp题目,求出最大相邻子序列的和. 方法:给出两种方法,一种dp,一种直接暴力(数据量小的时候可以考虑). 代码1: #include <iostream> #include <cstdio> using namespace std; int main() { int n; int t=1; cin>>n; int s[100010]; while(t<=n) { int m; cin>>m; long long ans=0,sum=0; i

nefu 628 Garden visiting

题目:给出一个n*m大的花园,求出从左上角到右下角的路径数目(路径单调). 方法:路径数=C(m+n-2,m-1);别忘了最后对p取余.由于数据最大能达到10^5,使用杨辉三角记录的话会爆内存,所以只能换方法. 由于C(x,y)=x!/(y!*(x-y)!),这里我们可以将x!分解素因子,并保存记录下来,同样的方法记录后面两个,由于x!必然能够整除(y!*(x-y)!),所以后面两个数有的因子,x!比然有,只需要将他们的因子的指数相加减,就能得到最后结果的素因子分解的情况,然后最后使用快速幂取模

nefu 643 teacher Li

题目:大意是说李老师的课堂上有n个学生,给出这n个人名单,今天共来了n-1个人,有一个人没来,给出这n-1个人的名单,来找出没来的那个人. 方法:开始使用map,set都会超时,汗了半天,实在没办法了,看了一下别人的思路,神思路!!大致方法就是把他们n个人的名字加起来,然后在减去n-1个人的名字,剩下的就是没来的那个人的名字.这里需要使用到ASCII码和数字之间通用的属性. 代码: #include <iostream> #include <cstdio> #include <

nefu 640 Number Guessing

题目:大意就是猜数,给定个四位数,然后给出这个数与正确的数之间的比较(#A*B,#代表有#个数字他的值和位置都对了,*代表有*个数的值对了),给出n个上述的4位数,让你确定这个正确的数是多少. 思路:直接暴力. 注意:程序结束是n为负数,而不是-1,为此超时了两次 T T. 代码: #include <iostream> #include <cstdio> #include <cstring> using namespace std; struct node { cha

nefu 642 monkey

题目:大意是说 有n个台子,编号1-n,开始时,有一只猴子站在编号1的台子上,猴子可以自由地蹦到两侧的台子上,每次i移动话费的时间是一秒,有个人每秒钟仍一个盘子到其中的一个台子上,问在猴子移动次数不超过t的情况下,猴子能接到的最多的盘子数. 方法:一个dp的题目,原来看到过,还不会做,直到最近在做dp的题目,才解决了这个题目. 使用一个三维数组dp[i][j][k],i代表当前进行到第i秒钟,也是第i盘子扔出的时间,j代表当前移动的步数,k代表当前所处的台子编号. 很容易能找到状态转移方程:dp

nefu 630 Min Chain

题目:大意是说给定两个数,让你用这两个数,随意地进行+或者-两种操作,求出最小操作数使得结果为1,当不可能达到1的时候,输出-1. 方法:明显的数论题目,相当于求出ax+by=1的解. 当两个数不互素时,得不到1的结果: 当两个数互素时,使用拓展欧几里德来求得x和y,输出abs(x)+abs(y)-1即可. 注意:这道题目的数据涉及0.1,这些数据需要单独处理. 代码: #include <iostream> #include <cstdio> #include <algor