5 条题解
-
0
#include <bits/stdc++.h> using namespace std; int su[200]; int cnt = 0; void sushu() { for (int i=2; i<=1000; i++) {//列举2到1000之间的数;:: int is = 1; for (int j=2; j<i; j++) { if (i%j==0) { is = 0; break; } } if (is==1) { su[cnt] = i; cnt++; } } } int findzuijisushu(int x) { int bestsushu = su[0];// 假设第一个是最近的素数:: int bestdist = abs(su[0] - x); for (int i=1; i<cnt; i++) { int dist = abs(su[i]-x); if (dist < bestdist) {//距离更小,直接更新:: bestdist = dist; bestsushu = su[i]; } else if (dist == bestdist) {//相等情况::: if (su[i]>bestsushu) { bestsushu = su[i]; } } } return bestsushu; } int main () { sushu(); int N; cin>>N; while(N--) { int x; cin>>x; int result = findzuijisushu(x); cout<<result<<endl; } return 0; }
信息
- ID
- 179
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 783
- 已通过
- 227
- 上传者