3 条题解

  • 0
    @ 2025-10-5 16:43:25

    #include<stdio.h>

    int main(){

    int t,n,min=0,max=0;

    scanf("%d",&t);

    while(t--){

    scanf("%d",&n);

    for(int i=2;i<=n;i++){

    int p=0;

    for(int j=2;j<i;j++){

    if(i%j==0){

    p=1;

    break;

    }

    }

    if(p==0){

    min=i;

    }

    }

    for(int i=n+1;i>0;i++){

    int p=0;

    for(int j=2;j<i;j++){

    if(i%j==0){

    p=1;

    break;

    }

    }

    if(p==0){

    max=i;

    break;

    }

    }

    if(n2||n0){

    min=2;

    }

    if(n-min<max-n){

    printf("%d\n",min);

    }else{printf("%d\n",max);}

    }

    return 0;

    }

    • 0
      @ 2025-10-4 21:01:32
      #include<stdio.h>
      #include<stdlib.h>
      int su[200],cnt=0;
      
      void sushu()//1000内
      {
          for(int i=2;i<=1000;i++)
         {
              int m=1;
              for(int j=2;j<i;j++)
              {
                  if(i%j==0){m=0;break;}
              }
              if(m==0){continue;}
              if(m==1){su[cnt]=i;cnt++;}
         }
      }
      
      int main()
      {
          sushu();
          int N;
          scanf("%d",&N);
          for(int i=1;i<=N;i++)
          {
              int x;
              scanf("%d",&x);
              int min=1000,y=0;
              for(int j=0;j<200;j++)
              {
                  int c=(su[j]-x);
                  if(abs(c)<min)
                  {
                      if((su[j+1]-x)==(x-su[j])){min=abs(c);y=j+1;}
                      else{min=abs(c);y=j;}
                  }
              }
              printf("%d\n",su[y]);
          }
          return 0;
      }
      
    • 0
      @ 2025-10-4 15:31:34
      #include <algorithm>
      #include <iostream>
      using namespace std;
      const int N = 1e5 + 5;
      bool vis[N];
      int ans[N];
      int cnt = 0;
      void shai(){
      	for(int i = 2; i <= N; i++){
      		if(vis[i] == 0){
      			ans[++cnt] = i;
      			for(int j = i+i; j <= N; j+=i){
      				vis[j] = 1;
      			}
      		}
      	}
      } 
      int main(){
      	shai();
      	int t; 
      	cin >> t;
      	while(t--){
      		int x; cin >> x;
      		if(x==1){ // 特判 n==1
      			cout << 2 << endl;
      		}
      		else if(vis[x] == 0){ // 是素数直接输出
      			cout << x << endl;
      		}else{
      			int left = 0, right = 0; // 找比x小的最大素数left,比x大的最小素数right
      			for(int i = 1; i <= cnt; i++){
      				if(ans[i] < x){
      					left = ans[i];
      				}
      				if(ans[i] > x){
      					right = ans[i];
      					break;
      				}
      			}
      			if(right - x > x - left){
      				cout << left << endl;
      			}else if(right - x <= x - left){
      				cout << right << endl;
      			}
      		}		
      	}
      
      }
      
      • @ 2025-10-4 15:32:28

        考察点:素数筛

    • 1

    信息

    ID
    179
    时间
    3000ms
    内存
    128MiB
    难度
    6
    标签
    (无)
    递交数
    714
    已通过
    205
    上传者