1 条题解

  • 0
    @ 2024-12-24 9:49:25

    C :

    #include<stdio.h>
    int main()
    {
        int N,M;
        scanf("%d",&N);
        for(int t = 1; t <= N; t++)
        {
            scanf("%d",&M);
            if(M == 1 || M ==2)
                printf("2\n");
            else
            {
                int k,num1,num2,s1,s2;
                for(k = 2; k < M; k++)
                    if( M % k == 0)
                        break;
                if(k < M)
                {
                    for(int i = M; i >= 2; i--)
                    {
                        int j;
                        for(j = 2; j < i; j++)
                            if(i % j == 0)
                                break;
                        if(j == i)
                        {
                            s1 = i;
                            num1 = M - i;
                            break;
                        }
                    }
                    for(int i = M;; i++)
                    {
                        int j;
                        for(j = 2; j < i; j++)
                            if(i % j == 0)
                                break;
                        if(j == i)
                        {
                            s2 = i;
                            num2 = i - M;
                            break;
                        }
                    }
                    if(num1 > num2)
                        printf("%d\n",s2);
                    else
                        printf("%d\n",s1);
                }
                else
                    printf("%d\n",M);
            }
        }
        return 0;
    }
    
    

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include <fstream>
    #include <limits>
    #include <vector>
    #include <list>
    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <cassert>
    using namespace std;
    int main()
    {
        int t,n;
        bool a[1010]={1,1,0,0,1};
        for(int i=2;i<1005;i++)
            for(int j=2;j<=i&&i*j<1005;j++)
                a[i*j]=1;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            for(int i=0;;i++)
            {
                if(n-i>0&&a[n-i]==0)
                {
                    printf("%d\n",n-i);
                     break;
                }
                if(n+i<=1000&&a[n+i]==0)
                {
                     printf("%d\n",n+i);
                     break;
                }
            }
        }
    return 0;
    }
    
    
    • 1

    信息

    ID
    944
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者