zoukankan      html  css  js  c++  java
  • 1和0既非素数也非合数

    素数距离问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
    现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
    如果输入的整数本身就是素数,则输出该素数本身,距离输出0
     
    输入
    第一行给出测试数据组数N(0<N<=10000)
    接下来的N行每行有一个整数M(0<M<1000000),
    输出
    每行输出两个整数 A B.
    其中A表示离相应测试数据最近的素数,B表示其间的距离。
    样例输入
    3
    6
    8
    10
    样例输出
    5 1
    7 1
    11 1
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long  ll;
    const int INF = 0x3f3f3f3f;
    const int moder = 10000;
    const int maxn = 1100000;
    
    int main()
    {
        map<int,int>mp;
        for(int i=2;i*i < maxn;i++)
        {
            if(mp[i] == 0)
            {
                for(int j=i*2;j < maxn;j = j+i)
                {
                    mp[j] = 1;
                }
            }
        }
        int t;
        cin >> t;
        while(t--)
        {
            int m;
            cin >> m;
            if(m == 1) {
                cout << "2 1" << endl;
                continue;
            }
            int flag1 = 0;
            for(int i=m;i < maxn;i++)
            {
                if(mp[i] == 0) {
                    flag1 = i;
                    break;
                }
            }
            int flag2 = 0;
            for(int i=m;i > 1;i--)
            {
                if(mp[i] == 0) {
                    flag2 = i;
                    break;
                }
            }
    
            if(flag1 - m < m - flag2)
            {
                cout << flag1 << " " << flag1-m << endl;
            } else{
                cout << flag2 << " " << m-flag2 << endl;
            }
        }
        return 0;
    }

    ——本想刷刷水题放松心情,结果采坑了,记住1和0既非素数也非合数!



  • 相关阅读:
    最短路变形题目 HDU多校7
    交换一个数字的任意两个位置,指定K次的最值
    七彩线段
    带限制的广搜 codeforces
    在一个矩阵内求一个最长上升子序列
    函数,以及三元运算符
    文件操作
    基础数据类型补充以及python编码
    深浅copy,is和==区别,集合,列表的操作
    字典和枚举
  • 原文地址:https://www.cnblogs.com/cunyusup/p/8455847.html
Copyright © 2011-2022 走看看