結果

問題 No.843 Triple Primes
ユーザー pockynypockyny
提出日時 2019-06-28 22:51:52
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 17 ms / 2,000 ms
コード長 599 bytes
コンパイル時間 898 ms
コンパイル使用メモリ 79,920 KB
最終ジャッジ日時 2025-01-07 05:35:37
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 42
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <set>
using namespace std;
vector<long long> p;
set<long long> s;
bool used[500010];
void prime(int n){
	int i,j;
	for(i=2;i<=n;i++){
		used[i] = true;
	}
	for(i=2;i<=n;i++){
		if(!used[i]) continue;
		for(j=2*i;j<=n;j+=i){
			used[j] = false;
		}
	}
}

int main(){
	int i,n,cnt = 1;
	cin >> n;
	if(n==1){
		cout << 0 << endl;
		return 0;
	}
	prime(n);
	for(i=3;i<=n;i++){
		if(used[i]){
			p.push_back(i);
			s.insert(i);
		}
	}
	for(i=0;i<p.size();i++){
		if(p[i]*p[i] - 2>n) break;
		if(s.count(p[i]*p[i] - 2)) cnt += 2;
	}
	cout << cnt << endl;
}
	
0