結果
問題 |
No.371 ぼく悪いプライムじゃないよ
|
ユーザー |
|
提出日時 | 2016-09-02 15:19:40 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,501 bytes |
コンパイル時間 | 1,661 ms |
コンパイル使用メモリ | 167,504 KB |
実行使用メモリ | 10,496 KB |
最終ジャッジ日時 | 2024-11-15 18:00:52 |
合計ジャッジ時間 | 11,213 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 33 WA * 5 TLE * 4 |
ソースコード
#define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES #include "bits/stdc++.h" #define REP(i,a,b) for(i=a;i<b;++i) #define rep(i,n) REP(i,0,n) #define ll long long #define ull unsigned ll typedef long double ld; #define ALL(a) begin(a),end(a) #define ifnot(a) if(not a) #define dump(x) cerr << #x << " = " << (x) << endl using namespace std; // #define int ll bool test = 0; int dx[] = { 0,1,0,-1 }; int dy[] = { 1,0,-1,0 }; #define INF (1 << 28) ull mod = (int)1e9 + 7; //..................... #define MAX (int)1e6 + 5 string manth_name = "9"; /* Eratosthenes(T prime[],int n)は nまでの素数をprimeに、2,3,と入れていきます */ /* 実行後arr[i]はiが素数の時1になります */ int prime[MAX + 5]; int isprime[MAX + 5]; int prime_size = 0; void Eratosthenes(int N) { for (int i = 0; i < N; i++) { isprime[i] = 1; } for (int i = 2; i < sqrt((double)N); i++) { if (isprime[i]) { for (int j = 0; i * (j + 2) < N; j++) { isprime[i *(j + 2)] = 0; } } } for (int i = 2; i < N; i++) { if (isprime[i]) { prime[prime_size++] = i; } } } ll min_prime_factor(ll n) { ll i; for (i = 2; i*i <= n; i++) { if (n % i == 0) return i; } return n; } signed main(void) { ll i, j, k; ll L, H; cin >> L >> H; Eratosthenes((int)sqrt(H) + 5); for (i = prime_size - 1; i > -1; i--) { for (j = H/prime[i]*prime[i]; j > 1; j -= prime[i]) { if (j < L) break; if (min_prime_factor(j) == prime[i]) { cout << j << endl; return 0; } } } }