2 条题解
-
0
#include<bits/stdc++.h> using namespace std; bool v[20000];
void shai() { for(int i=2;i<=20000/i;i++){ if(!v[i]){ for(int j=i*i;j<=20000;j+=i) { v[j]=1; } } } } void solve() { int n; cin >> n; int mid=(n+1)/2; while(1){ if(!v[mid]&&!v[n-mid]) { cout << mid*(n-mid) << '\n'; break; } else { mid++; } } }
int main() { int t; cin >> t; shai(); while(t--) { solve(); } return 0; }
-
0
简单的埃氏筛应用
#include<bits/stdc++.h> using namespace std; const int N = 1e6 + 7; int a[N]; int ans[N]; int cnt = 0; void su() { a[1] = 1; for(int i = 2; i <= N; i ++) { if(!a[i]) { cnt ++; ans[cnt] = i; for(int j = i + i; j <= N; j += i) { a[j] = 1; } } } } int main() { su();//埃氏筛筛出所有素数存在ans数组里 int t; scanf("%d", &t); while(t --) { int n; scanf("%d", &n); int mx = -1; for(int i = cnt; i >= 1; i --)//循环暴力求解 { if(ans[i] < n && a[n - ans[i]] == 0)//如果这个数小于n并且n-这个数也是素数就可以对答案做出贡献 { if(mx < ans[i] * (n - ans[i]))//更新最大值 { mx = ans[i] * (n - ans[i]); } } } printf("%d\n",mx); } }
- 1
信息
- ID
- 1020
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 221
- 已通过
- 28
- 上传者