7 条题解
-
0
#include<stdio.h> // #include<iostream> // using namespace std; const int x = 1005000; int flag [x]; void no_prime() {//用埃氏筛,先筛一遍 flag[1] = 1; flag[0] = 1; for (int i = 2; i < x; i++) { if (flag[i] == 0) { for (int j = 2 * i; j < x; j += i) { flag[j] = 1; } } } } int main() { no_prime(); int n, m; scanf("%d",&n); while (n--) { scanf("%d",&m); int arr[1000000] = {0}; int temp = 0; for (int i = 2; i <= m; i++) { if (flag[i] == 0) { arr[++temp] = i; } } int count = 0; // 注意temp的取值范围,非常容易错 for (int i = 1; i < temp ; i++) { if (arr[i + 1] - arr[i] == 2 || arr[i + 1] - arr[i] == 1) { count++; } } printf("%d\n",count); } }
信息
- ID
- 128
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 1742
- 已通过
- 236
- 上传者