私の解決策は、最初に2からnまでのすべての素数をリストしてから計算することです。すべての素数をリストするために、「エラトシンふるい法」と呼ばれる方法が使用されました。
アルゴリズムはここにあります:https : //www.sohu.com/a/252674565_614593
1 #include <iostream> 2 #include <vector> 3 #include <cmath> 4 5 名前空間std を使用 。 6 7 int main() 8 { 9 int n; 10 cin >> n; 11 12 vector < int > arr; 13 arr.reserve(n + 1 ); 14 for(int i = 2 ; i <= n; ++ i) 15 { 16 arr [i] = i; 17 } 18 19 double a = sqrt(n); 20 //(すべての素数 21 を(int i = 2 ; i <= a; ++ i)で 取得22 { 23 for(int j = 2 ; j * i <= n; j ++ ) 24 { 25 arr [i * j] = 0 ; 26 } 27 } 28 29 int time = 0 ; 30 for(int i = 2 ; i +2 <= n; ++ i) 31 { 32 if(arr [i + 2 ] -arr [i] == 2 ) 33 { 34 time ++ ; 35 } 36 } 37 cout << 時間; 38 戻り 値0 ; 39 }