POJ2262-Goldbach's Conjecture
2011-07-28 23:48
344 查看
转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299063931
提示:100W真是大的BT。。。。我用了优化还是勉强AC掉,认识的一位达人,16ms AC这题,Orz....
解题思路:[/b][/b]
[/b]
如果还是按常规方法求一百万内的所有素数([/b]就是除法求模)[/b],时间复杂度是大到难以置信的。因此必须转换思路进行优化,用加法代替除法,[/b]用空间换取时间![/b]计算算加法绝对要比除法快得多,而且一百万个地址,也就是差不多1MB[/b]的内存,相信现在99%[/b]的电脑还是可以很轻松地拿出来的![/b]
[/b]
判断素数的优化:[/b]
1、 [/b]素数除2[/b]外都是偶数,先减半[/b]
2、 [/b]递归法:如果一个数不能被比它小的所有素数整除,那么它就是素数。[/b]
3、 [/b]根号法:如果一个数X[/b]不能被 [/b][2, 根号X ] [/b]内的所有数整除,那么它就是素数[/b][/b]
[/b]
组合上面三个方法,可以大大减少时间复杂度,其实第[/b]3[/b]点是最有效的省时方法,能够少做很多除法。[/b][/b]
提示:100W真是大的BT。。。。我用了优化还是勉强AC掉,认识的一位达人,16ms AC这题,Orz....
解题思路:[/b][/b]
[/b]
如果还是按常规方法求一百万内的所有素数([/b]就是除法求模)[/b],时间复杂度是大到难以置信的。因此必须转换思路进行优化,用加法代替除法,[/b]用空间换取时间![/b]计算算加法绝对要比除法快得多,而且一百万个地址,也就是差不多1MB[/b]的内存,相信现在99%[/b]的电脑还是可以很轻松地拿出来的![/b]
[/b]
判断素数的优化:[/b]
1、 [/b]素数除2[/b]外都是偶数,先减半[/b]
2、 [/b]递归法:如果一个数不能被比它小的所有素数整除,那么它就是素数。[/b]
3、 [/b]根号法:如果一个数X[/b]不能被 [/b][2, 根号X ] [/b]内的所有数整除,那么它就是素数[/b][/b]
[/b]
组合上面三个方法,可以大大减少时间复杂度,其实第[/b]3[/b]点是最有效的省时方法,能够少做很多除法。[/b][/b]
//Memory Time //228K 907MS #include<iostream> using namespace std; bool judge_prime(int digit) { int i,flag; if(digit%2==0) return false; else { for(i=3,flag=1;i*i<=digit;i+=2) if(digit%i==0) { flag=0; break; } if(flag) return true; } return false; } int main(void) { int temp,num,flag; for(;;) { cin>>num; if(num%2!=0||num<6) return 0; for(temp=3,flag=1;temp<=num/2;temp+=2) if(judge_prime(temp)&&judge_prime(num-temp)) { cout<<num<<" = "<<temp<<" + "<<num-temp<<endl; flag=0; break; } if(flag) cout<<"Goldbach's conjecture is wrong."<<endl; } return 0; }
相关文章推荐
- Poj 2262 / OpenJudge 2262 Goldbach's Conjecture
- POJ 2262:Goldbach's Conjecture
- poj 2262 Goldbach's Conjecture 素数 水题
- POJ 2262 Goldbach's Conjecture
- POJ2262 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 数学常识 难度:0
- POJ 2262 Goldbach's Conjecture (素数判断)
- poj 2262 Goldbach's Conjecture【质数和】
- POJ 2262 Goldbach's Conjecture(Eratosthenes筛法)
- 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(素数表分解质数)