(本题取 $n=1000$)
【思路】由于范围不大,因而可以直接 $\mathcal O(n^2)$ 枚举,然后套上质数的判断即可。由于待判断的数大小不确定,因而用质数判断函数来代替欧拉筛:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
   | #include<stdio.h> #include<stdbool.h> int maxn,ans; bool prime(int x) {     if(x<2)return false;     if(x==2||x==3||x==5)return true;     if(x%2==0||x%3==0||x%5==0)return false;     for(int a=7,b=11;a*a<=x;a+=6,b+=6)if(x%a==0||x%b==0)return false;     return true; } int main() {     for(int a=-999;a<=999;++a)     {         for(int b=-1000;b<=1000;++b)         {             int n=0;             while(prime(n*n+a*n+b))++n;             if(n>maxn)             {                 maxn=n;                 ans=a*b;             }         }     }     printf("%d",ans);     return 0; }
   |