UESTC 1272 Final Pan's prime numbers解答を当てて、むやみに問題をして、数論


Final Pan's prime numbers
Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit  Status
Final Pan likes prime numbers very much.
One day, he want to find the super prime numbers.A prime numbers  n ( n >4) is a super prime number only if  n -4 and  n +4 are both prime 
numbers,too.
Your task is really easy:Give  N ,find the maximum super prime number  n  that  n <= N .
Input
Only one integer  N.(4Output
If there is no such interger  n ,print' −1 ',otherwise print  n .
Sample input and output
Sample Input
Sample Output
8
7

Source
第7回ACM趣味プログラミングコンテスト第4戦(公式戦)A
My Solution
試合が終わってやっと気づいた.
その时、暴力法で1つ书いて、T 5を渡しましたが、その前にこの书きはきっと正しいと思っていたので、多くのデータを试していませんでした.ずっと最適化を考えていたが、1 e 12は1 sクラスでタイムアウトしないとは考えられなかった.
その时、なぜ警戒していなかったのか、あるいはなぜ1001000を入力しなかったのか、すぐに分かった.
7だけ・・・  プログラムで証明することができて、1 e 7まで大体1分で計算することができて、1 e 12の2時間余りでも7を計算することができます///**/注釈で落としたものを削除すれば証明できます.
むやみに問題をやったり、むやみに問題をやったり、答えを当てたりします.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
//using namespace std;
//int a[1000000];
/*
bool isPrime(long long n)
{
    if(n < 2) return false;
    if(n == 2) return true;
    if(n%2 == 0) return false;
    int ok = (int)sqrt(n);
    for(long long i = 3; i <= ok; i += 2)
        if(n%i == 0) return false;
    return true;
}
*/


int main()
{
    long long n/*,t*/;
    scanf("%lld",&n);
    if(n>=7) printf("7");
    else printf("-1");


    //t=0;
    //for(unsigned i=n+4;i>0;i--)
    //    if(isPrime(i)) {/*a[t]=i;t++;*/printf("%d,",i);}
    //for(int i=0;i<t;i++)
    //    printf("%d",a[i]);
    //cout<<t<<" ";
/*    for(long long i=n+4;i>0;i--){
        if(isPrime(i)) {
            if(isPrime(i-4)&&isPrime(i-8))
            printf("%lld",i-4);


        }
    }
*/
    return 0;
}

ありがとう