poj 2262 Goldbach's Conjecture 【素数筛】
来源:互联网 发布:国外期刊 数据库 编辑:程序博客网 时间:2024/06/05 22:38
这题必然的筛选法,出现了2个问题:1.开始开了一个 result 数组(全局变量),想把素数挨个存进来,虽然还计数估算了的,一直的runtime error , 后来发现是多此一举,去掉之后就变成wrong answer,看来可以编译了。这么说来,一百万对于两个大数组还是有点吃不消的 2.筛的时候一定要筛完整,for(j=2*i;j<MAXN;j+=i)prime[j]=1;这里开始用的
j<(MAXN/i),明显就错了。
另外我很好奇题目中说的"Goldbach's conjecture is wrong.",很明显不会wrong的,wrong了科学家们还继续证明干嘛,可是我AC以后看网上的结题报告居然还真有把wrong考虑进去的人。。。
2个错误都存在的代码
#include <stdio.h>#define MAXN 1000002#define PrimeNum 671000int prime[MAXN];//用筛法求素数,1代表不是素数(被筛掉)int result[PrimeNum];int main(){//先打出素数表prime[0]=prime[1]=1; //开始去掉prime[0]和prime[1]int i,j;for(i=2;i<MAXN;i++){if(prime[i]==0)//如果prime[i]是素数就把他的倍数都筛掉{for(j=2*i;j<(MAXN/i);j+=i)prime[j]=1;}}//test 1/*int count=0;for(i=2;i<MAXN;i++)if(prime[i]==0)count++;printf("一百万以内的素数有 %d 个\n",count);*///test 2/*for(i=2;i<100;i++)if(prime[i]==0)printf("%d ",i);*/int count=0;for(i=3;i<100;i++)if(prime[i]==0){result[count]=i;count++;}/*for(i=0;i<100;i++)printf("%d ",result[i]);*/int n;while(scanf("%d",&n)){if(n==0)break;for(i=0; ;i++)if(prime[n-result[i]]==0){printf("%d = %d + %d\n",n,result[i],n-result[i]);break;}}return 0;}
正确的代码
#include <stdio.h>#define MAXN 1000002int prime[MAXN];//用筛法求素数,1代表不是素数(被筛掉)int main(){//先打出素数表prime[0]=prime[1]=1; //开始去掉prime[0]和prime[1]int i,j;for(i=2;i<MAXN;i++){if(prime[i]==0)//如果prime[i]是素数就把他的倍数都筛掉{for(j=2*i;j<MAXN;j+=i)prime[j]=1;}}int n;while(scanf("%d",&n)){if(n==0)break;for(i=3; ;i++)if(prime[i]==0 && prime[n-i]==0){printf("%d = %d + %d\n",n,i,n-i);break;}}return 0;}
- poj 2262 Goldbach's Conjecture 【素数筛】
- poj 2262 Goldbach's Conjecture 素数筛
- POJ 2262-Goldbach's Conjecture(素数筛)
- POJ 2262 Goldbach's Conjecture(素数表)
- poj 2262 Goldbach's Conjecture 素数 水题
- POJ 2262 Goldbach's Conjecture(素数相关)
- POJ 2262 Goldbach's Conjecture 素数筛选
- POJ 2262 Goldbach's Conjecture(素数)
- poj 2262 Goldbach's Conjecture 【素数筛法】
- POJ 2262 Goldbach's Conjecture ( 筛选法求素数 )
- POJ 2262/ ZOJ 1951:Goldbach\'s Conjecture - 筛法打素数表
- 素数水题 POJ 2262 Goldbach's Conjecture
- POJ 2262 Goldbach's Conjecture(素数筛选法)
- Poj.2262 Goldbach's Conjecture【素数】 2015/09/22
- POJ 2262 Goldbach's Conjecture(素数表分解质数)
- poj 2262 Goldbach's Conjecture -- 筛法求素数打表
- POJ 2262 Goldbach's Conjecture 素数打表
- POJ 2262 Goldbach's Conjecture 简单的素数
- Nginx模块之SessionSticky
- C++成员指针
- poj_1166_The Clocks(暴力)
- undefined reference问题总结
- ios开发-下拉刷新一个莫名其妙的错误
- poj 2262 Goldbach's Conjecture 【素数筛】
- 【rmzt:魔兽冰封王座主题】
- java类库原码分析---Integer
- 数位dp poj3286 How many 0's?
- HDU 3694Fermat Point in Quadrangle(三分 不过网上大多是费马点的题解)
- Java获取网页源代码
- 【Rails】有关TDD测试入门
- 大数减法
- 一个骰子,6面,1个面是 1, 2个面是2, 3个面是3,问平均掷多少次能使1、2、3都至少出现一次。