首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Project Euler Problem 27总结

2013-02-25 
Project Euler Problem 27小结Project Euler上有很多有意思的问题,刚做到第27题,对这个问题做个小结。 Prob

Project Euler Problem 27小结

Project Euler上有很多有意思的问题,刚做到第27题,对这个问题做个小结。

 

Problem 27:

Euler有一个著名的方程n^2+n+41,当n=0到39时,方程结果均为质数。如今人们用电脑计算,发现了另一个方程n^2-79n+1601,当n=0到79时,方程结果也均为质数。

设一方程形如n^2+an+b,其中|a|<1000,|b|<1000,n为从0开始的连续自然数。

求使得公式能获得最多质数的a和b,输出结果为a*b。

 

问题很简单,首先写好判断质数的方法:

voidEuler_Cal_27(){    int n=0;    int maxn = 0;    int expr = 0;    int result = 0;     for(int b=1; b<1000; b++)    {        if(isPrime(b))        {            for(int a=-b; a<1000; a++)            {                n = 0;                expr = n*n + a*n + b;                 while( expr>0 && isPrime(expr) )                {                    n++;                    expr = n*n + a*n + b;                }                 if( n>maxn )                {                    maxn = n;                    result = a*b;                }            }        }    }     cout<< result <<endl;}

此时程序运行时间减少至0.17s。

从这次优化小程序发现,优化程序时大多从代码本身入手,忽略问题,不去想原理,在进一步提高程序性能的时候容易遇到瓶颈。以后要注重锻炼自己理解问题的能力,基础还是很差,需要提高。

热点排行