随笔分类 -  筛选法

素数筛选再优化模板
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int set[10000000]={0};int p[5000000];void fun(int n){ int t=(int)sqrt(n+1); for(int i=3;i<=t;i+=2) { if(set[i/2]) continue; int k=i*i,p=i+i; for(int j=k;j<=n;j+=p) { set[j/2]=1; } } int count=0; p[++co 阅读全文
posted @ 2011-07-21 22:03 枫叶飘泪 阅读(321) 评论(0) 推荐(0)
素数筛选优化模板
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define MAXSIZE 10000000int prim[MAXSIZE+5];void fun(){ memset(prim,0,sizeof(prim)); prim[0]=prim[1]=1; for(int i=4;i<=MAXSIZE;i+=2)//先将偶数筛掉 { prim[i]=1; } double t=sqrt(MAXSIZE);//记住t为double型 for(int i=3 阅读全文
posted @ 2011-07-21 16:30 枫叶飘泪 阅读(250) 评论(0) 推荐(0)
素MM
摘要:问题 B: 素MM时间限制: 1 Sec内存限制: 128 MB提交: 30解决: 17[提交][状态][讨论版]题目描述素数有很多神奇的性质,所以很美。我们知道一个日期将年、月、日按顺序连接在一起可以组成一个八位数,例如2011年3月6日可以写成20110306。我的某个MM的生日组成的数是一个素数。偶尔我叫她素MM,没人知道是啥意思,她自己也不知道。O(∩_∩)O哈哈~我心里可是真的美美的(⊙o⊙)哦!嗯,什么?你的生日也是素数?你也想做“素MM”或者“素GG”?那好吧,不过我可是很小气的哦!只有你出生在1988年或者1989年我才让你做“素MM”或“素GG”。要不然,你把这两年里日期组成 阅读全文
posted @ 2011-07-21 16:04 枫叶飘泪 阅读(998) 评论(1) 推荐(0)
杭电 1286 找新朋友
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>int set[40000];int main(){ set[1]=set[0]=0; int cn,n; while(scanf("%d",&cn)!=EOF) { while(cn--) { int sum=0; memset(set,0,sizeof(set)); scanf("%d",&n); for(int i=2;i<=n/2;i++) { for(int j=1;i*j<n 阅读全文
posted @ 2011-07-19 21:52 枫叶飘泪 阅读(153) 评论(0) 推荐(0)
杭电 1164 Eddy's research I
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>int prim[65540];void fun(){ for(int i=1;i<=65540;i++) { prim[i]=0; } for(int i=2;i<=65540/2;i++) { for(int j=i+i;j<=65540;j+=i) { prim[j]=1; } }}int main(){ void fun(); int n; while(scanf("%d",&n)!=EOF) { i 阅读全文
posted @ 2011-07-19 20:06 枫叶飘泪 阅读(303) 评论(0) 推荐(0)
杭电 1397 Goldbach's Conjecture
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>int prim[65540];void fun(){ for(int i=1;i<=65540;i++) { prim[i]=0; } for(int i=2;i<=65540/2;i++) { for(int j=i+i;j<=65540;j+=i) { prim[j]=1; } }}int main(){ fun(); int n; while(scanf("%d",&n),n) { int f=0; 阅读全文
posted @ 2011-07-19 18:17 枫叶飘泪 阅读(200) 评论(0) 推荐(0)
杭电 1215 七夕节
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>long long s[500005];void fun(){ for(int i=1;i<500005;i++) { s[i]=1; } for(int i=2;i<500005;i++) { for(int j=2;i*j<500005;j++) { s[i*j]+=i; } }}int main(){ fun(); int t,n; while(scanf("%d",&t)!=EOF) { while( 阅读全文
posted @ 2011-07-19 16:28 枫叶飘泪 阅读(306) 评论(0) 推荐(0)
杭电 1406 完数
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ int n,num1,num2; while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) { int sum; int f=0; scanf("%d%d",&num1,&num2); if(num1>num2) { num1=num1+num2; num2=num1-num2; num1=num1-num2; 阅读全文
posted @ 2011-07-19 15:19 枫叶飘泪 阅读(271) 评论(0) 推荐(0)
素数筛选
摘要:题目:Problem D Problem DescriptionEddy's interest is very extensive, recently he is interested in prime number. Eddy discover the all number owned can be divided into the multiply of prime number, but he can't write program, so Eddy has to ask intelligent you to help him, he asks you to write 阅读全文
posted @ 2011-05-31 22:36 枫叶飘泪 阅读(218) 评论(0) 推荐(0)
素数筛选模板
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>#define Max 100int prime[Max+5];void fun( ){ memset( prime,0,sizeof( prime ) );//假设MAX内所有数都是素数并赋值为0 for( int i = 2; i <= Max / 2; ++i )//分别找出所有2--MAX/2内的所有数的倍数并赋值为1,标记为非素数 for( int j = i + i; j <= Max; j += i ) prime[j] = 1 阅读全文
posted @ 2011-05-31 20:21 枫叶飘泪 阅读(199) 评论(0) 推荐(0)